【问题标题】:Populate dropdown in ATK4在 ATK4 中填充下拉列表
【发布时间】:2011-10-02 23:26:37
【问题描述】:
function init(){
    parent::init();
    $f = $this->add('Form');
    $f->addField('dropdown', 'Label:')->setModel('User');
}

因此,此代码将输出一个下拉列表,该列表由与模型 User 关联的表中的值填充,但这些值将是型号。

有没有办法使用模型的另一个字段来填充它?

【问题讨论】:

    标签: php frameworks atk4


    【解决方案1】:

    没有直接的方法。首先,您确定不必使用“参考”类型而不是下拉菜单吗?

    其次,免费是怎么回事:

    class Model_User_BySurname extends Model_User {
        public function getListFields(){
            return array('id'=>'id','surname'=>'name');
        }
    }
    

    然后进一步:

    $form->addField('reference','Label')->setModel('User_BySurname');
    

    当然,您可以通过创建某种“setNameField('surname')”函数和在 getListFields 中使用的隐藏属性,在模型中重新定义此字段。

    【讨论】:

    • 感谢您快速而清晰的回答,这很棒,我喜欢 ATK4,希望 API 能够更好地记录,如果发生这种情况,我认为这个框架将成为顶级框架之一。
    • 好的,所以我找不到有关此参考字​​段的任何信息,从我所看到的与下拉列表相同的方式来看,有什么特别之处吗?
    • @Juanma 谢谢! “reference”最初是为了特别适用于模型而开发的。如果 dropdown->setModel 不起作用,请使用参考。
    【解决方案2】:

    情况发生了变化,我花了一些时间才弄清楚现在该怎么做。

    class Model_MyModel extends SQL_Model {
      public function init() {
        parent::init();
        $this->addField('titleField');
      }
    
      public function getTitleField() {
        return 'titleField';
      }
    }
    
    $form->addField('dropdown', 'Label')->setModel('MyModel');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多