这段代码在$result = Input::get('term');
之外的一切工作正常,请有人帮助我获取字段term
的输入值。当我这样做$result = 8;
时,一切正常。
在我的插件“课程”模型中
<?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
答案 0 :(得分:1)
首先,您的问题是由term
字段在HTML中未命名的事实引起的。如果您在浏览器中或在触发dependsOn
触发器时发送的AJAX请求中查看生成的表单输入,您会注意到term
字段的实际字段名称前缀为表单小部件的别名(可能是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;
有关如何正确利用dependsOn
属性的更多信息,请参见https://octobercms.com/docs/backend/forms#field-dependencies。请注意,在您的情况下,您可以将其与trigger
属性结合起来以隐藏start_date
字段,直到在term
字段中选择了有效选项为止。
答案 1 :(得分:-1)
尝试将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'
。