我正在卸载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/add
或http://localhost/home/add
,这取决于您安装应用程序的位置。
在我看来,最好的方法是使用$this->baseUrl()
方法(仅适用于视图,而不适用于控制器),或者您可以在bootstrap.php中定义一个常量,该常量保存您的baseUrl。