Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Zend框架的MVC在Zend框架中创建非常简单的命名路由_Php_Zend Framework - Fatal编程技术网

Php 使用Zend框架的MVC在Zend框架中创建非常简单的命名路由

Php 使用Zend框架的MVC在Zend框架中创建非常简单的命名路由,php,zend-framework,Php,Zend Framework,我刚刚使用Zend框架及其MVC构建了一个非常基本的站点。(实际上,我现在甚至没有使用模型,到目前为止,所有这些都只是用于静态信息的控制器/视图) 当我开始玩弄表单时,我意识到在Zend_表单的示例中,他们使用了类似这样的内容,设置表单的动作: $form->setAction('/user/login') 其中包含URL。我知道Zend Framework有路由,它们可以命名,但我似乎无法从手册中掌握如何为某些控制器/操作创建简单路由,以便我可以这样做: $form->setAc

我刚刚使用Zend框架及其MVC构建了一个非常基本的站点。(实际上,我现在甚至没有使用模型,到目前为止,所有这些都只是用于静态信息的控制器/视图)

当我开始玩弄表单时,我意识到在Zend_表单的示例中,他们使用了类似这样的内容,设置表单的动作:

$form->setAction('/user/login')
其中包含URL。我知道Zend Framework有路由,它们可以命名,但我似乎无法从手册中掌握如何为某些控制器/操作创建简单路由,以便我可以这样做:

$form->setAction($named_route)
// or 
$form->setAction('named_route')
我希望我的问题是清楚的。我找不到任何重复的问题,但如果你发现一个并指出它,我不会介意


链接到资源就像例子一样好,所以如果你知道某个地方有一篇像样的博客文章,不要浪费你的时间。谢谢

参考文献: -查看“12.5.7.1.Zend_控制器_路由器_路由”以获得更清晰的解释

这不是最好的方法,但我有一个有效的例子。我欢迎更正。 看了之后,我同意命名路由应该放在它们自己的配置中(我使用Django,命名视图/URL通常是分开的),但这里我只想在我的引导中定义路由

因此,在Bootstrap.php中,在Bootstrap类中,我创建了一个将自动运行的函数,如下所示:

public function _initRoutes()
{
    $frontController = Zend_Controller_Front::getInstance();
    $route = new Zend_Controller_Router_Route(
        'login/', // The URL, after the baseUrl, with no params.
        array(
            'controller' => 'login', // The controller to point to.
            'action'     => 'index'  // The action to point to, in said Controller.
        )
    );
    $frontController->getRouter()->addRoute('loginpage', $route);
}
在上面的示例中,“loginpage”将是“命名路由”的名称

因此,在我的LoginController中(在构建表单的函数中),而不是

$form->setAction('/blah/login')
我检索命名路由的URL并将其传入,如下所示:

$form_action_url = $this->view->Url(array(), 'loginpage', true);
// -- SNIP --
$form->setAction($form_action_url) // ...
这可能毫无意义,也可能是错误的,但在目前看来似乎是可行的。 当Zend Framework以/Controller/View(Action)/的形式自动处理URL时,我之所以想要一个命名URL,是因为我不知道这类事情。我已经使用Django一段时间了,它的URL是预定义的,我喜欢这种方式

Zend Framework MVC URL开箱即用,这很好


请随意添加注释和更正,以说明这应该如何工作

没有理由不能在视图中设置操作,这会使语法更准确一些。既然表单依赖于单词“loginpage”,并且“loginpage”是在Bootstrap.php中定义的,那么这不是一个定义不正确的依赖项吗?我的意思是Bootstrap.php是站点范围的文件,而登录控制器可能来自外部模块等?