Форма CakePHP в элементе, вызывающая ошибки - PullRequest
0 голосов
/ 22 ноября 2010

Я думаю, что это может быть легким решением, но я потратил час на расследование безрезультатно.

У меня есть форма регистрации в элементе, который используется в представлениях, принадлежащих разным контроллерам. Используя атрибут "url", я сказал ему отправлять в / users / register, но по некоторым причинам поля не передаются в базу данных.

Вместо этого есть ошибки для «неопределенного индекса» и ошибка MySQL для неопределенного вторичного ключа, который я установил (он пуст, потому что он не передается). Как ни странно, форма работает нормально, если я включаю элемент где-то в представлениях пользователей. Кто-нибудь знает, почему это происходит?

ОБНОВЛЕНИЕ - вот соответствующий код, извините:

<?php 
    echo $form->create(array(
        'id' => 'signupform', 
        'url' => array(
            'controller' => 'users', 
            'action' => 'register'))); 
?>

Все поля формы верны, поскольку элемент работает в представлениях пользовательского контроллера в любом месте. Нужно ли включать в создание формы какую-либо другую информацию, чтобы указывать ее более прямо?

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Укажите модель 'Пользователь' в качестве первого параметра метода $ form-> create ().

<?php 
    echo $form->create('User', array(
        'id' => 'signupform', 
        'url' => array(
            'controller' => 'users', 
            'action' => 'register')
        )
    ); 
?>

Это позволит гарантировать, что поля формы будут названы как данные [Пользователь] [имя_поля]и не даст вам увидеть эту неопределенную ошибку индекса.

Надеюсь, это сработает для вас!

0 голосов
/ 22 ноября 2010

Не видя код, похоже, что Cake волшебным образом полагает, что Модель - это та модель контроллера, которая контролирует текущее представление.Когда этот контроллер - Пользователи, он работает правильно.Когда это, скажем, Статьи, оно будет пытаться (и не сможет) подгонять поля формы к модели Статьи.

Не видя никакого кода, невозможно предложить больше помощи.

РЕДАКТИРОВАТЬ:

Если форма содержит смешанные модели, например, «Пользователь» и «Статья», вы должны добавить префиксы к полям, например:

$form->input('User.username');
$form->input('Article.title');

и т. Д.

Если вы этого не сделаете, контроллер предположит, что все они принадлежат его собственной модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...