如何在octobercms中使用依赖关系的路由?

问题描述 投票:-1回答:2

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

php ajax laravel octobercms
2个回答
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'];
}

进一步的过程数据[如果需要]其他明智的你可以使用数据-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返回。

如果有任何疑问请评论。


0
投票

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.