我创建了一个用户个人资料,用户可以在其中添加他们的信息所以在URL部分,我希望他们放置他们的其他链接,如Facebook,www.facebook.com / user等。
但是当我点击保存没有更新?
以下是用户模型: 模型/ user.php的
<?php
class User extends AppModel {
public $name = 'User';
public $hasMany = array (
'UserWeb'=>array(
'className'=>'UserWeb',
'foreignKey'=>'user_id'
)
);
}
?>
UserWeb的模型: 模型/ UserWeb.php
<?php
class UserWeb extends AppModel {
public $name = 'UserWeb';
public $belongsTo = array('User' =>
array('className' => 'User',
'conditions' => '',
'order' => '',
'foreignKey' => 'user_id'
)
);
}
?>
用户控制器:
$this->User->id = $this->Auth->user('id');
if ($this->request->is('post')) {
if ($this->User->save($this->request->data, array('validate' => false))) {
$this->Session->setFlash('Profile updated succsessefully!',
'default', array('class' => 'okmsg'));
$this->redirect($this->request->here);
} else {
$this->Session->setFlash('Profile could not be saved. Please, try again.',
'default', array('class' => 'errormsg'));
}
}
视图形式:
<?php
echo $this->Form->create();
echo $this->Form->input('UserWeb.title',
array('label'=>false,'placeholder'=>'Title'));
echo $this->Form->input('UserWeb.url',
array('label'=>false,'placeholder'=>'Enter URL'));
echo $this->Form->end('Save');
?>
任何人都可以帮忙吗?我试图找到很多时间的解决方案。 当我提交表单时,它不会在user_webs表中存储新的信息。
顺便说一下,这是表:
CREATE TABLE `user_webs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT '0',
`title` varchar(128) DEFAULT NULL,
`url` varchar(128) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `web` (`user_id`),
CONSTRAINT `web` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
答案 0 :(得分:2)
您正在尝试关联模型的数据。并且您的主要模型没有要保存的数据。
你可以在这里采取两种方法,
您现在的方式,获取User
的信息并让他们从同一表单中提供UserWeb
信息。该用途将提供信息作为注册的一部分。为此,您应该参考Saving Associated model data - saveAll()
第二种方式,让用户在注册时提供他们的信息,然后让他们添加UsersWeb
。 (稍后我的意思是用户可以在注册期间更新它,但不能以相同的形式更新)。对于此用途UserWeb
。从/yourapp/UsersWebs/add
出现相同的表单。您必须提供user_id
。这将更加精炼。
P.S:我强烈建议你再次通过Saving your data。它几乎不会花费你10分钟,我相信你之前已经这样做了,但在遇到这个问题后再花10分钟就可以帮助你理解这些东西。