在Model上使用HtmlHelper在返回的错误中插入链接

vit*_*tto 4 cakephp html-helper model

我正在努力CakePHP并试图了解使我的应用程序保持一致和合乎逻辑的最佳方法.

现在我正在尝试Model data validation处理和处理验证错误view,我怀疑如果我想在返回的错误中插入一些链接,我应该怎么做,例如忘记密码.

HtmlHelper在模型中使用(如果可能的话)在我的应用程序中返回一致的链接是好的,还是我应该考虑另一种方式?

<?php
App::import('Helper', 'Html');
class User extends AppModel {
    var $name = 'User';
    var $validate = array (
        'email' => array (
            'checkEmail' => array (
                'rule' => array('email', true),
                'message' => 'Email not valid message.'
            ),
            'checkUnique' => array (
                'rule' => 'isUnique',
                'message' => 'This email is allready in the db, if you forgot the password, '.(string)$this->Html->link('click here', array('controller' => 'users', 'action' => 'password-recover')).'.'   
            )
    )
    // the rest of the code...
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我似乎无法用HTML字符串链接消息字符串.是否存在最聪明的方法,或者我应该简单地插入html字符串而不是HtmlHelper

Cha*_*rry 5

如果你真的想在你的验证消息中使用HTML,CakePHP提供了一种方法来实现这一点,没有破坏Cake,没有编写大量代码.

在您$validation刚刚使用的任何HTML,你想有呈现给用户.

在您的视图中创建FormHelper::input($fieldName, array $options)传递时,以下数组为$options:

$options = array('error' => array(
              'attributes' => array('escape' => false)
               ))
Run Code Online (Sandbox Code Playgroud)

请参阅此页面以了解有关$options['error']...选项的更多信息.

或者,如果您希望所有输入都没有HTML转义,则可以$options['inputDefaults']在创建表单时传递.