我是Agiletoolkit的新手,仍在学习绳索。 这是我的问题:
我有一个常规的CRUD来管理工作。
$this->add('CRUD')->setModel('Job');
模型包含字段“job_number”,该字段应自动填入“添加”页面:N762,N763等。
这可以在模型中完成,还是从CRUD表中调用addjob页面?
任何人都可以给我一些非常简单的代码示例吗?
由于
答案 0 :(得分:2)
我认为这应该在模型级别完成。它基本上与View级别无关。
如果此job_number字段与ID严格相关,那么您甚至可以将其作为模型中的表达式字段,甚至不将其存储在数据库中。例如,job_number = id + 100。
但是如果你真的想将它存储在数据库中,那么你应该这样做:
1)在模型中将job_number创建为具有类型(' number')的普通字段,但是使用 - > system(true)或 - > editable(false),具体取决于您希望在何处看到此内容字段(表单,网格);
2)在模型init方法中添加hook afterInsert。
function init(){
parent::init();
// ... your field definitions here
// add afterInsert hook
$this->addHook('afterInsert',array($this,'afterInsert'));
}
3)在模型创建方法
function afterInsert($m,$new_id){ // <-- new_id is ID of newly inserted record
$m->load($new_id);
$m['job_number'] = $new_id + 100; // <-- your function here
$m->save();
}
or maybe you can even write it simpler - not sure
function afterInsert($m,$new_id){ // <-- new_id is ID of newly inserted record
$this->set('job_number',$new_id + 100); // <-- your function here
$this->save();
}
这应该有效,但我没有测试过。只需动态写在这里。
试试这个,如果您需要更多帮助,请告诉我们。此外,欢迎您加入ATK4 IRC频道并直接提出您的问题。
答案 1 :(得分:0)
这样的事情应该解决你的问题:
模型init中的:
$this->addField("job_no")
->defaultValue("N" . $this->dsql()->del("fields")->field(
$this->dsql()->expr("max(id) + 1"), "nr"
)->getOne());
但未经过测试。