0

我创建了一个用户配置文件,用户可以在其中添加他们的信息。因此,在 URL 部分,我希望他们放置其他链接,例如 Facebook、www.facebook.com/user 等。

但是当我单击不保存任何更新时?

这是用户模型:Models/User.php

<?php
class User extends AppModel {

    public $name = 'User';

    public $hasMany = array (
    'UserWeb'=>array(
        'className'=>'UserWeb',
        'foreignKey'=>'user_id'
        )
    );
}
?>

UserWeb 的模型:Models/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
4

1 回答 1

2

您正在尝试关联模型的数据。并且您的主模型没有要保存的数据。

你可以在这里采取两种方法,

  1. 您现在的方式,获取User信息并让他们提供UserWeb来自同一表格的信息。使用将提供信息作为注册的一部分。为此,您应该参考保存关联模型数据 - saveAll()

  2. 第二种方式,让用户在注册期间提供他们的信息,然后让他们UsersWeb稍后添加。(稍后我的意思是用户也可以在注册期间更新它,但不能以相同的形式)。对于这个用途UserWeb。从 中出现相同的表格/yourapp/UsersWebs/add。您必须提供user_id. 这样会更精致。

P.S: I strongly recommend you to go through Saving your data again. It will hardly take you 10 mins, I am sure you have done this before but sparing another 10 mins after having encountered the issue will help you understand these things as back of your hand.

于 2013-03-15T02:46:41.787 回答