Я делаю сообщение AJAX для контроллера Laravel, как показано ниже.
<script>
let data = {
a: true,
b: false
}
this.axios.post(this.url, data)
.then (result => console.info(result) )
.catch (result => console.info(result) )
</script>
На стороне бэкэнда в методе пост-действия контроллера Laravel 5.6 я пытаюсь проверить, какие значения отправляются вызовом AJAX из внешнего интерфейса. И затем я записываю его в файл журнала laravel.
<?php
public function myPostHandler(Request $request) {
$data = $request->all();
\Log::info("Posted data = " . print_r($data, true));
}
?>
В файле laravel.log ... он показывает, что значения пусты, как показано ниже -
[a] =>
[b] =>
Итак, мой вопрос: как мне отправить логические данные контроллеру, чтобы они не потерялись? А также хотелось бы понять, почему Laravel так себя ведет и почему мои логические значения обрезаются? Это что-то вызвано промежуточным программным обеспечением?
PS: Ниже приведены мои маршруты, у которых нет проблем:
Route::get('something/{catchall}', [
'uses' => 'myController@index'
])->where('catchall', '(.*)');
Route::post('something/{catchall}', [
'uses' => 'myController@update'
])->where('catchall', '(.*)');
В моих прошлых проектах я передавал логические значения, вы можете показать мне свой маршрут? должно быть что-то, что происходит до того, как добраться до вашего контроллера
Отредактировал свой вопрос, чтобы добавить маршруты. Но маршруты не проблема.
Я заставил это работать, используя обходной путь использования текстовых значений для true ==> 'true' и false ==> 'false'. Но я все еще не уверен, почему я не могу просто отправить логическое значение true или false в действие контроллера laravel?
Что параметры запроса отображаются на вкладке сети в chrome devtools?
Взгляните на https://stackoverflow.com/a/43471980/3003285






В методах myPostHandler полученные данные в порядке. Я предполагаю \ Log :: info записать логический тип с приведением к строке / Попробуйте преобразовать данные перед журналом
$data = $request->all();
foreach($data as $key => $elem){
if (is_bool($elem)) {
$data[$key] = ($elem) ? 'true' : 'false';
}
}
\Log::info("Posted data = " . print_r($data, true));
Я проверю это сегодня. Но это кажется правильным ответом.
Я не занимаюсь какой-либо конкретной обработкой данных в промежуточном программном обеспечении BTW.