链接到另一个操作


link to another action

我正在卸载zend框架。我有一个链接到控制器、主页、的视图

所以:

application>controllers>HomeController.php
application>views>scripts>home>index.phtml

在index.phtml页面中,我有一个链接,指向同一控制器中的一个操作:

application>views>scripts>home>add.phtml

链接的代码是:

<a href="../application/controllers/home/add">add</a>

这不仅不起作用,而且我确信这不是在zend框架中实现这一点的最佳方式。

请注意,我使用的是wamp

http://localhost/sites/url/public/home/add

使用时:

<?php
    echo '<a href="' . $this->url(array('controller' => 'home', 'action' => 'add')) . '">Add Job</a>';  
?>

我收到这个错误消息:

Message: Invalid controller specified (sites)

这是我的htaccess 中的内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

使用url帮助程序:

http://framework.zend.com/manual/en/zend.view.helpers.html

<a href="<?php echo $this->url(array('controller' => 'index', 
                                     'action' => 'index', 
                                     'module' => 'module1')); ?>" title="test">

更新

.htaccess应该是这样的:

SetEnv ENVIRONMENT development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI} !'.(css|gif|ico|jpg|js|png|swf|txt)$
RewriteRule ^.*$ index.php [NC,L]

当在ZF中使用相对和绝对链接时,它的工作原理与ZF之外的几乎相同除了所有的请求都通过index.php路由,所以你实际上并没有路由到目录,你只是告诉路由器链接的位置:

<a href="/home/add">add</a>

<a href="http://mysite.com/home/add">add</a>

url帮助程序将是实现这一点的首选方式,并且应该有效。在你的情况下,我怀疑localhost路径操作系统会给你的url带来困难,我知道我的url总是这样。

为每个项目设置一个vhost会使这个问题消失。如果你需要vhost设置方面的帮助,这里有很多很好的资源

http://blog.srmklive.com/2010/12/27/how-to-create-virtual-hosts-using-zend-server-ce/

您不必在链接中引用application文件夹,因为该文件夹可以位于htdocs/www/public_html文件夹之外。

链接应该看起来像:http://yourdomain.com/home/addhttp://localhost/home/add,这取决于您安装应用程序的位置。

在我看来,最好的方法是使用$this->baseUrl()方法(仅适用于视图,而不适用于控制器),或者您可以在bootstrap.php中定义一个常量,该常量保存您的baseUrl。