我用:
创建了一个新的控制器zf create controller email
但是生成的文件没有放入application/modules
,而是放在application/
...
无论如何,我将控制器和视图文件移动到了正确的目录
然后我用了:
<a href="<?php echo $this->url(array(), 'email');?>">EMAIL</a>
刷新页面后,它会显示internal Error 500
真的不知道切割的是什么 - &gt;它是Zend Version: 1.12.1
答案 0 :(得分:1)
$ this-&gt; url()视图助手通过匹配给定的参数和路径名来工作,以创建URI。
为了使您的代码有效,您必须:
1 - 在路由器文件中,指定路由,例如:
$router->addRoute(
'email',
new Zend_Controller_Router_Route_Regex('([\w\d\.\_]+)@([\w\d\.]+)([\s]*)',
array(
'module' => 'default',
'controller' => 'index',
'action' => 'index'
),
array(
1 => 'username',
2 => 'host'
),
'%s@%s'
)
);
addRoute的第一个参数是路径的名称,这是您用作$this->url()
的第二个参数的名称。第二个参数是路由器适配器。有许多不同的适配器(查看手册),这个是正则表达式适配器。
第一个参数 - 用于检查uri的正则表达式字符串。你需要将它修改为更加电子邮件的正则表达式,但是现在这已经足够了。
第二个参数是你的默认值。
第三个变量。对于正则表达式中的每个组,您应该指定一个名称,因此@之前的组将变为1 => 'username'
,之后变为2 => 'host'
。
最后是第四个参数 - 非常重要 - 反向路线。这个实际上是Zend用于粘合碎片的那个。你可以通过将每个组更改为“符号”来创建它,所以整个事情变成"%s@%s"
- 你将不得不阅读一些关于如何创建它们的文章 - 我只使用%d来表示数字,%w仅用于字母而%s用于混合,不需要任何其他内容。
2 - 设置路由器后,返回视图文件并修改功能,如下所示:
$this->url(array('username' => 'test', 'host' => 'test.com'), 'email');
您生成的HTML应如下所示:
<a href="test@test.com">EMAIL</a>
3 - 在服务器配置或zend应用程序ini文件中打开error_reporting。您将更深入地了解实际发生故障的原因。
答案 1 :(得分:0)
我正在使用configs/application.ini
文件来配置和引导:
因此,将以下行添加到文件中可以正常工作!
resources.router.routes.email.route = /email
resources.router.routes.email.defaults.module = default
resources.router.routes.email.defaults.controller = email
resources.router.routes.email.defaults.action = index
因此,路线显然需要明确声明,而不是由zf tool