如何在十月厘米中使用依赖关系的路线?

时间:2019-03-18 11:04:24

标签: php ajax laravel octobercms

我目前正在使用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块中的代码和路由以使其工作,以便仅显示类别的相关子类别?

2 个答案:

答案 0 :(得分:1)

要将当前元素值传递给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'];
}
  

其他过程数据 [如果需要它的话] 否则,您可以只使用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返回什么。

如有疑问,请发表评论。

答案 1 :(得分:0)

十月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;
}