javascript - CakePHP 和 AngularJS - {{$index}} 的评估

标签 javascript php validation angularjs cakephp

我正在使用 CakePHP 和 AngularJS,我需要验证我的多模型表单。

例如,这是创建元素的方式:

echo $this->Form->input(
    $model . '.{{$index}}.url',
    array(
        'value' => '{{link.url}}',
        'label' => 'URL',
        'div' => array(
            'class' => 'short'
        )
    )
);

验证正常。 输出:

var_dump($this->Staticpage->validationErrors)

array(1) { ["StaticpageLink"]=> array(1) { [1]=> array(2) { ["title"]=> array(1) { [0]=> string(27) "This is a mandatory field." } ["url"]=> array(1) { [0]=> string(27) "This is a mandatory field." } } } } 

问题是:如果我使用那个 {{$index}},它被正确评估,但没有出现验证消息。例如,如果我设置 1,就会出现消息。

问题是什么?使用 AngularJS 评估索引的正确方法是什么?


更新:这里是 View 的更具体的部分:

    <div ng-repeat="link in links track by $index">
        <div ng-hide="link.remove">
    <?php
            echo $this->Form->hidden(
                $model . '.{{$index}}.id',
                array(
                    'value' => '{{link.id}}'
                )
            );
            echo $this->Form->hidden(
                $model . '.{{$index}}.remove',
                array(
                    'value' => '{{link.remove}}'
                )
            );
            echo $this->Form->input(
                $model . '.{{$index}}.title',
                array(
                    'value' => '{{link.title}}',
                    'label' => 'Título',
                    'div' => array(
                        'class' => 'short'
                    )
                )
            );
//continue...

如您所见,它位于 ng-repeat 中。

最佳答案

问题是;

您想使用客户端代码显示服务器端错误验证。

$index是客户端代码,它是 AngularJS 特定的 javascript 代码。

并且您希望服务器端代码(即 php)了解 $index 是什么。

服务器端,cakePHP 或任何 php,永远不知道 $index 是什么意思,也永远不会知道 $index 将是 1,2,3,4,5 或其他什么。

在 php 端,您的代码在 <? ... ?> 中只会发生一次。

说到客户端,那么ng-repeat将按链接的次数迭代。

因此,您无法使用 ng-repeat 在 php 中验证您的输入 X 次.

请尝试不同的方法。

---- 编辑------

我建议采用不同的方法,尽管您可能不同意。

  1. 无需任何服务器端验证即可生成客户端表单。

  2. 呈现由服务器端代码生成的客户端。

  3. AngularJS在客户端提供了很多验证工具,尽量多用,这样提交到服务端时,尽可能有效。

  4. 但是,不良用户可以在不使用您的客户端代码的情况下提交您的表单,因此在提交表单时,假设输入并不总是正确,在服务器端验证用户输入。您需要一个单独的验证逻辑而不使用 view(html)。您可以将此部分用作 ajax 调用。

  5. 如果有错误,将错误消息返回给用户,以便客户端可以正确显示错误。即“第 3 方 API 调用存在未知错误”

关于javascript - CakePHP 和 AngularJS - {{$index}} 的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21137106/

相关文章:

php - 如何连接共享 1 列且 ID 相同的 2 个表并向其中添加 WHERE 子句

php - MySQL 和 PHP : Getting a SUM from a row in column A based on a DATE from column A joined by an ID in column B?

validation - Angular 验证输入类型="number"

jquery - 如何验证 Twitter Bootstrap 表单向导

WPF 验证和 IDataErrorInfo

javascript - REGEX Str Replace- 查找链接文本并使它们成为链接

javascript - 小型自定义所见即所得编辑器

javascript - 如何将多个setClassToggle(具有多个类)设置为同一个触发器ScrollMagic

php - 验证日程安排的日期时间输入

javascript - 对象获取相同的 api 端点