2013-09-24 4 views
0

У меня есть форму, чтобы добавить нового пользователя. Доступ к этой форме может получить только администратор, который зарегистрировался. К сожалению, имя пользователя и пароль администратора заполняются в поля формы, которые, как ожидается, будут полностью понятны. И одна странная вещь: имя пользователя печатается в поле дня рождения!CakePHP 2.4: Нежелательные предварительно заполненные данные формы

Я действительно не могу объяснить, как это работает. И я не мог найти в WWW никакой записи от человека, у которого была такая же проблема - я только нашел вопросы и ответы о предварительно заполненных данных формы, которые нужны.

Это Посмотреть /Users/add.ctp

<h1>Add a new Member</h1> 
<?php echo $this->Form->create('User', array('url' => BASE_URL.'/users/add', 'action'=>'post')); ?> 
<table class="form"> 
    <tr><td>Username:</td><td><?php echo $this->Form->input('User.username', array('label' => false, 'div' => false, 'value' => ''));?></td></tr> 
    <tr><td>Name:</td><td><?php echo $this->Form->input('User.name', array('label' => false, 'div' => false, 'value' => ''));?></td></tr> 
    <tr><td>Lastname:</td><td><?php echo $this->Form->input('User.lastname', array('label' => false, 'div' => false, 'value' => ''));?></td></tr> 
    <tr><td>E-Mail:</td><td><?php echo $this->Form->input('User.email', array('label' => false, 'div' => false, 'value' => ''));?></td></tr> 
    <tr><td>Birthday:</td><td><?php echo $this->Form->input('User.birth', array('label' => false, 'div' => false, 'value' => ''));?></td></tr> 
    <tr><td>Password:</td><td><?php echo $this->Form->input('User.password', array('label' => false, 'div' => false, 'value' => ''));?></td></tr> 
</table> 

<?php 
    echo $this->Form->submit('Submit', array('formnovalidate' => true)); 
    echo $this->Form->end(); 
?> 

А вот контроллер /UsersController.php

public function add() { 

    $this->layout = 'admin'; 

    if ($this->request->is('post')) { 
     // Saving the data 
     $this->User->create(); 
     if ($this->User->save($this->request->data)) { 
      $this->Session->setFlash(__('Data saved.')); 
      return $this->redirect(array('action' => 'view')); 
     } 
     $this->Session->setFlash(__('Data could not be saved.')); 
    } 

} 

Кстати: Saving работает отлично. Конечно, администратор является Object User, как и новый член для добавления. Я думаю, здесь кроется проблема, но я действительно не знаю ... Я думаю об этой проблеме целый день :(Кто-нибудь знает, что делать?

Заранее спасибо.

+0

'URL' и 'действия' вместе не имеет смысла :), а также URL-адрес не должен быть объявлен, что сложно, массив синтаксиса с использованием контроллера и ключей действий. И отбросьте это «значение», оно также сломает ваши формы по недействительности. Плохая идея. Старайтесь быть как можно более простыми (чем меньше вы должны набирать, тем лучше). – mark

+0

Спасибо за ваш комментарий. Я знаю, что cakePHP позволяет создавать формы более удобным способом. Но мне все еще нужна «url» вещь из-за очень раздражающей проблемы с переадресацией домена, которая, к сожалению, не сделана htaccess, а с iFrame каким-то образом ... если я не объявляю URL-адрес таким образом, форма не сохраняйте ничего, не выдавайте сообщений об ошибках, но снова загрузите форму ... Не могли бы сделать ничего против этого до сих пор, нужно работать с тем, что у меня есть: '( – Snoops

+0

Тогда вы можете отказаться от действия. бесполезно, так как по крайней мере один из них не делает того, что он должен делать, и будет только запутывать всех :) – mark

ответ

0

Нет в вашем браузере? (сохраненное имя пользователя/пароль при вводе в первый раз)

Итак, вы можете включить автозаполнение.

<?php echo $this->Form->create('User', array('url' => BASE_URL.'/users/add', 'action'=>'post', 'autocomplete' => 'off')); ?> 

Эта опция =>'автозаполнения' => 'выключено'

+0

О, мой ... Вы поняли! Я так глуп! Спасибо огромное! Я думаю, что я полностью сосредоточился на вопросе, почему имя пользователя появилось в поле дня рождения, а не в поле имени пользователя. И поэтому я не видел очевидной вещи. Ваша помощь очень ценится. – Snoops

+0

@Snoops Рад, что помогло вам. Это обычные ошибки, всегда случается со мной. –

0

Проверьте $this->data .

CakePHP autocompletes форма с данными нашла там, потому что догадывается, что это данные уже отправленный пользователем.

в вас Например, если у вас есть какое-то значение в $this->data['User']['birth'] он должен показать, что значение входного рождения.

+0

Не в этом, я проверил это первым. Но большое спасибо за подсказку. – Snoops

+0

'$ this-> data' - это не переменная, которую вы хотите проверить. Посмотрите на '$ this-> request-> data', так как это часть запроса. Не входит в состав контроллера. – Jelmer

Смежные вопросы