gpt4 book ai didi

php - BelongsTo 在 cakephp 和 html select 中的问题,我不明白该怎么做

转载 作者:可可西里 更新时间:2023-10-31 23:44:29 27 4
gpt4 key购买 nike

cakephp 菜鸟的简单问题:

我有两个模型,玩家和团队。

团队有一个 id (int) 和一个 cool_name (varchar)。

玩家有一个 id (int)、一个 cool_name (varchar) 和一个团队表 team_id (int) 的引用。

Cool_name 而不是 name 因为我没有英文表格,所以我不能使用字段“name”。

所以,一个球队有很多球员,一个球员属于球队。

我的播放器模型:

class Player extends AppModel {
var $name = 'Player';
var $belongsTo = array('Team');
}

(团队模型里面除了名字什么都没有)

玩家 Controller :

class PlayersController extends AppController {
var $name = 'Players';

function add() {
$this->set('teams', $this->Player->Team->find('list'));
//then save...
}

在播放器的添加 View 中:

//...
echo $form->input('squadra_id');
//...

好的,我选择了其中的团队 ID;我不想要 id,而是团队的名称,然后保存 id:类似于(在 html 中)

<select name="data[Player][team_id]" id="PlayerTeamId">
<option value="1">Cool Name 1</option>

<option value="2">Cool Name 2</option>
<!-- -->
<option value="{team id}">{team cool name}</option>
</select>

我该怎么办?

  • 解决方案 -

代替

$this->set('teams', $this->Player->Team->find('list'));

放这个

$this->set('teams', $this->Player->Team->find('list', array('fields' => array('cool name') ) ) );

最佳答案

由于您正在针对您的 Team 模型执行 find( 'list' ) 并且该模型具有 name 属性(CakePHP默认情况下识别为显示字段),您应该返回的是一个关联数组,其中键是团队 ID,值是团队名称。再加上您将该数组设置在名为 teams 的变量中,Cake 将为您完成这项工作。

在您的表单中,我不确定 'squadra_id' 的来源,但将其更改为 'teams' 您应该会看到选择列表很好地填充:

echo $form->input( 'teams' );

如果我对您的理解是正确的,除了您 View 中的输入定义之外,您拥有启用此“魔法”的所有正确内容。您可以在 http://book.cakephp.org/view/189/Automagic-Form-Elements 阅读有关如何使用 find( 'list' ) 自动填充选择框的更多信息.

希望这对您有所帮助。

关于php - BelongsTo 在 cakephp 和 html select 中的问题,我不明白该怎么做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com