Как использовать маршрут для зависимых отношений в октябре? - PullRequest
0 голосов
/ 18 марта 2019

В настоящее время я работаю над внешней формой, используя запрос данных 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 ]

1 голос
/ 19 марта 2019

Чтобы передать текущее значение элемента в 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 голосов
/ 18 марта 2019

October CMS имеет метод $this->params(), который можно вызвать для получения параметров URL-адреса из текущего запроса (см. здесь ).Ваш код должен выглядеть следующим образом (не проверено):

Route::get('ajax/{cats}' , function () {
    $results = Cat::whereHas('parent', function ($query) {

        $query->where('cats', $this->param('cats'));

    })->pluck('cat_title', 'id')->all(); 

    return $results;
}
...