【问题标题】:cakephp 3 prefill user details in textboxcakephp 3 在文本框中预填充用户详细信息
【发布时间】:2020-02-11 02:01:26
【问题描述】:

我已更新个人资料视图,并且我的表单可以正常工作。当我加载此表单时,我需要它应该预先填充数据库值而不是空的。我不想使用会话。 我正在使用 cakephp 3.8 版本,在 update_profile.ctp 文件中我有以下代码

echo $this->Form->control('firstname',['minlength'=>3, 'value'=>'' ]);
echo $this->Form->control('lastname',['minlength'=>3]);

【问题讨论】:

  • 请显示您用于加载现有用户实体和创建表单的代码(不是您在此处已有的表单控件,而是实际的create 调用)。
  • 公共函数 updateProfile() { $user = $this->Users->newEntity(); $userId = $this->Auth->user('id'); //echo $this->Auth->user('firstname'); $userData = $this->Users->get($this->Auth->user('id')); if ($this->request->is('post')) { //有post数据执行代码 } } $this->set(compact('user')); }

标签: database view pull cakephp-3.7


【解决方案1】:

以下是更新后的功能

public function updateProfile() {
     $user = $this->Users->newEntity();
     $userId = $this->Auth->user('id');
     $userData = $this->Users->get($this->Auth->user('id'));
     if ($this->request->is('post')) {
       //has post data execution code
     }
     //$this->set(compact('user'));
     $this->set(compact('userData'));
 }

你已经传递了“用户”变量,你必须传递 userData,因为在这个变量中你已经获取了用户的详细信息。 一旦通过,表单将得到 pr-populated。

【讨论】:

    【解决方案2】:

    我们可以使用控制器将数据传递到 update_profile.ctp 文件中 $this->set(compact('Users'));

    这里的 users 是数据库中的一个表,其中包含名为 'firstname'、'lastname' 的字段

    然后我们就可以在我们的表单中使用它了

    echo $this->Form->control('firstname',['minlength'=>3, 'value'=>'' ]);
    echo $this->Form->control('lastname',['minlength'=>3]);
    

    【讨论】:

    • 我已经有了它 Anik 还有其他解决方案吗?我不想使用会话。
    猜你喜欢
    • 2011-02-07
    • 2013-04-09
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多