除了$result = Input::get('term');
之外,这个代码中的一切都运行良好。有人请帮我获取字段term
的输入值。当我这样做时$result = 8;
一切正常。
在我的插件“Lesson”模型中
<?php
namespace Cng\Tennis\Models;
use Model;
use Flash;
use Db;
use Input;
use request;
use Cng\Tennis\Models\Term as termModel;
class Lesson extends Model
{
public function getSdateOptions () {
$result = Input::get('term');
$term = termModel::select('id','start_date')->where('id', $result )->first();
if ($this->term_id == $result ) {
return [$term->id => $term->start_date];
}
else{
return ['Select a date' => 'Select a date' ];
}
}
public function getFdateOptions () {
return ['Select a date' => 'Select a date' ];
}
在yaml
term:
label: Term
nameFrom: name
descriptionFrom: description
span: auto
containerAttributes: { }
type: dropdown
emptyOption: Select
tab: 'Event Details'
dependsOn:
- location
sdate:
label: 'Start Date'
mode: date
span: left1
cssClass: ''
required: 1
dependsOn:
- term
type: dropdown
tab: 'Event Details'
disabled: 1
首先,您的问题是由于term
字段未在HTML中命名。如果您在浏览器中查看生成的表单输入,或者在触发dependsOn
触发器时发送的AJAX请求中,您会注意到term
字段的实际字段名称前缀为Form小部件的别名(可能是Form
,所以在这种情况下,实际的字段名称是Form[term]
)。
但是,您甚至根本不需要使用Input
,您可以直接在函数中引用term
字段引用的模型属性:
$options = [0 => 'Select a start date'];
$term = TermModel::find($this->term);
if ($term) {
$options = [$term->id => $term->start_date];
}
return $options;
有关如何正确使用https://octobercms.com/docs/backend/forms#field-dependencies属性的更多信息,请参阅dependsOn
。请注意,您可以将它与trigger
属性结合使用,以隐藏start_date
字段,直到您在term
字段中选择了有效选项。
尝试用select('id','start_date')
或all()
替换find($result)
,如果你只想抓住开始日期,请执行pluck->('start_date')
。似乎你不能在我的测试中有用的雄辩模型上使用select。
这是我在没有DB调用的情况下运行select时得到的结果:
$names = Products::select('id','name')->where('id', 1);
return $names;
但是当我通过普通的集合查询方法访问模型时,我得到了这个:
$names = Products::all()->where('id', 1);
return $names;
最后你可以使用$names = Products::find('1')->pluck('name')->first();
替换1
与$result
和'name'
与'start_date'
在你的情况下。