我目前正在使用ajax数据请求处理前端表单。在我的代码中,我在php块中有这个,当选择选择框中的类别来显示子类别时,它会显示在部分中。
function onChangeCat()
{
$this['subs'] = Cat::whereHas('parent', function ($query) use($cats){
$query->where('cats','=', $cats );
})->pluck('cat_title', 'id');
我正在尝试将其连接到路线,以便当用户点击某个类别时,相关的子类别会显示在第二个选择框中。
这是我的路径文件,其中#id类别选择框作为参数
Route::get('ajax/{cats}' , function () {
//
return json_encode();
});
如何连接php块中的代码和路由工作,以便只显示相关的类别子类别?
要将当前元素值传递给Ajax Handler
,您需要给它name - attribute
并添加data-request="onChange"
处理程序。所有其他的东西都将由October CMS Ajax Api
处理
<select name="country" data-request="onChange">
<option id="1">A</option>
<option id="2">B</option>
<option id="3">C</option>
<option id="4">D</option>
</select>
在你的Ajax处理程序中
function onChange() {
$id = post('country'); // as we name it `country` for select
// ^ - this will be your selected value [id]
return ['data' => 'some data'];
}
进一步的过程数据[如果需要]其他明智的你可以使用数据-
request-update="calcresult: '#result'"
与返回Html Markup
<script>
function myFunction(data) {
console.log(data)
}
</script>
<select
name="first"
data-request="onChange"
data-request-success="myFunction(data)">
...
</select>
在success-full request
这将调用myFunction
返回数据在我们的情况下它将是{'data':'some data'}
JSON对象,无论你从Ajax-Handler
返回。
如果有任何疑问请评论。
10月CMS有一个$this->params()
方法,可以调用该方法从当前请求中获取url参数(请参阅here)。您的代码应如下所示(未经测试):
Route::get('ajax/{cats}' , function () {
$results = Cat::whereHas('parent', function ($query) {
$query->where('cats', $this->param('cats'));
})->pluck('cat_title', 'id')->all();
return $results;
}