我没有看到zend框架。我有一个链接到控制器的视图,home,
这样:
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]
答案 0 :(得分:3)
使用url helper:
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]
答案 1 :(得分:2)
在ZF中使用相对和绝对链接时,它与ZF外部的工作方式非常相似 除了所有请求通过index.php路由,所以你实际上没有路由到目录,你只是告诉路由器链接的位置:
<a href="/home/add">add</a>
或
<a href="http://mysite.com/home/add">add</a>
url helper将是执行此操作的首选方法,应该可以使用。在你的情况下,我怀疑localhost路径操作系统会给你的网址造成困难,我知道它总是与我的网站有关。
为每个项目设置vhost将使此问题消失。如果您需要有关vhost设置的帮助,可以在SO上找到一些很好的资源。
http://blog.srmklive.com/2010/12/27/how-to-create-virtual-hosts-using-zend-server-ce/
答案 2 :(得分:0)
您不必在链接中引用application
文件夹,因为该文件夹可以位于htdocs
/ www
/ public_html
文件夹之外。< / p>
该链接应如下所示:http://yourdomain.com/home/add
或http://localhost/home/add
,具体取决于您安装应用的位置。
在我看来,最好的方法是使用$this->baseUrl()
方法(仅适用于视图,而不是控制器),或者你可以在bootstrap.php中定义一个常量,它保存你的baseUrl。 / p>