2013-09-24 43 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.')); 
    } 

} 

順便說一句:節能效果還算不錯。 當然,管理員是對象用戶,就像要添加的新成員一樣。我認爲,這裏存在着問題,但我真的不知道......我在思考這個問題了整整一天:(有誰知道該怎麼辦?提前

感謝。

+0

'URL' 和 '行動' 起來就沒有任何意義:),還鏈接不應該被宣佈複雜,數組使用控制器和動作鍵的語法就足夠了。放棄那些「有價值」的東西,它也會在失效時打破你的表格。餿主意。儘可能簡單(越少越好)。 – mark

+0

感謝您的評論。我知道cakePHP允許以更舒適的方式生成表單。但我仍然需要'網址'的東西,因爲一個域重定向非常惱人的問題,不幸的是不是由一個htaccess的,但與iFrame的某種方式...如果我不這樣聲明的網址,形式會不保存任何東西,不提供任何失敗消息,但只會再次加載表單...直到現在,無法對它做任何事情,必須使用我擁有的:'( – 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的自動完成數據的形式發現那裏,因爲它會猜測這是已經被用戶提交的數據。

在您例如,如果你在$this->data['User']['birth']有一定的價值它應該顯示

在生日輸入該值。
+0

不是這樣,我先檢查了一下。但非常感謝你的提示。 – Snoops

+0

'$ this-> data'不是你想檢查的變量。查看'$ this-> request-> data',因爲它是請求的一部分。不是控制器的一部分。 – Jelmer