CakePHP 3.0 выдает ошибку «обязательное поле» в непустом полеPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 CakePHP 3.0 выдает ошибку «обязательное поле» в непустом поле

Сообщение Anonymous »

У меня возникли проблемы с тем, что мой сайт CakePHP 3.0 выдает ошибку, хотя этого не должно быть. Я создаю форму «Добавить страницу», показанную ниже:

Код: Выделить всё

echo $this->Form->create($newpage);
echo $this->Form->control('title');
echo $this->Form->control('content');
echo $this->Form->button('Save');
echo $this->Form->end();
Обязательно укажите заголовок и содержание. После отправки формы «заголовок» используется для создания «имени» страницы, которое в настоящее время представляет собой просто заголовок в нижнем регистре с удаленными пробелами (поэтому «О нас» будет иметь название «aboutus»). Это имя также сохраняется, но оно должно быть уникальным (например, если у вас есть страницы с заголовками «No Space» и «NOSpace», они обе получат имя «nospace», даже если заголовки уникальны).
У меня есть следующие правила проверки в PagesTable.php:

Код: Выделить всё

public function validationDefault(Validator $validator)
{
$validator = new Validator();

$validator
->requirePresence('title','content')
->lengthBetween('title', [0, 50])
->add(
'name',
['unique' => [
'rule' => 'validateUnique',
'provider' => 'table',
'message' => 'Not unique']
]
);

return $validator;

}
Контролеру передается форма, которая содержит следующее:

Код: Выделить всё

public function add($mainpage_id = null) {
$newpage = $this->Pages->newEntity();

if ($this->request->is('post')) {
$newpage = $this->Pages->patchEntity($newpage, $this->request->data);
// Get page name by removing spaces from title
$name = strtolower(str_replace(' \'\"', '', $newpage->title));
// Get navigation order by getting number of current siblings, and adding 1
$siblings = $this->Pages->find('all')
->where(['parent_id' => $newpage->parent_id])
->count();
$nav_order = $siblings + 1;
$newpage = $this->Pages->patchEntity($newpage, ['name' => $name, 'nav_order' => $nav_order]);
if ($newpage->errors()) {
$errors = $newpage->errors();
if(isset($errors['name'])) {
$this->Flash->error('The title you have entered is too similar to one that already exists. To avoid confusion, please choose a different title.');
}else {
$this->Flash->error('Please correct errors below');
}
}else {
$this->Pages->save($newpage);
$page_id = $newpage->id;
$this->Flash->success('Page created');
return $this->redirect('/admin/pages/index');
exit;
}
}

$this->set(compact('newpage'));
$this->set('_serialize', ['newpage']);
}
Однако, когда я пытаюсь отправить страницу, я получаю сообщение «Это поле обязательно» в поле заголовка, даже если я ввел заголовок. Фактически, он не позволяет мне отправить форму без ввода заголовка (всплывает сообщение «Заполните это поле»), но затем выдает ошибку.

Может кто-нибудь увидеть, что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/493 ... mpty-field
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»