Я использую 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?
Обновление: здесь более специфичная часть вида:
<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
.
Я считаю, что индекс $ используется внутри внутри таких вещей, как ng-repeat, и вы устанавливаете их программно, не собираетесь работать. Кроме того, ваш вопрос немного расплывчатый и, похоже, является вопросом PHP, а не вопросом с угловатым. – SoluableNonagon
@EliteOctagon Я просто добавил несколько фрагментов View, поэтому можно увидеть, что код находится внутри ng-repeat. Похоже, что основная проблема заключается в том, что Cake пытается помещать сообщения об ошибках в элементы перед процессом Angular по оценке {{$ index}}. –
Я не знаю синтаксиса, но возможная концепция будет заключаться в 'json_encode'' validationErrors' в вашем представлении и передать его некоторой переменной JS, доступной AngularJs. Затем в цикле повтора вы можете проверить, есть ли настоящая ошибка проверки для этого 'index' и отобразить HTML-ошибку div или нет (просто повторно используйте HTML для нее из торта). Надеюсь, что это поможет, или кто-то из специалистов в AngularJS может дать вам лучшее руководство;) – lp1051