2015-08-20 4 views
-1

У меня есть HTML со сценарием, который, как это (кстати, придется использовать старомодный пост в моем HTML по причинам) ...

@extends('layout') 
// ... includes for jquery and ajax 
<script> 
var theVariableINeedInLaravel = "SomeInterestingStringI'mSure"; // in reality, this is a stringify. 
$.post ("foo", function(theVariableINeedInLaravel) { 
} 
</script> 
@stop 

Тогда в routes.php ...

<?php 
Route::post('foo', '[email protected]'); 
?> 

Затем в соответствующем контроллере .... ThatOneController.php

class ThatOneController extends \BaseController{ 
    public function getValue(){ 
    error_log(print_r($_POST,true)); // returns nothing. 
    error_log(print_r(input::all()); // returns nothing. 
} 

}

Или альтернативный вариант функции ...

public function getValue(Request $request){ 
error_log(print_r($request->all()); // returns nothing. 

} 

Ни один из них не похоже на работу. Как я могу получить свою переменную post?

+0

Кстати, я знаю, что гипотетически '$ значение = вход :: получить ('someDesignatorname')'; должен получить мне мою переданную переменную, но '$ .post' не устанавливает имя для значения массива, означающего неблокированный массив ... так что :: get не избавит меня от беспорядка. – liljoshu

+0

Я видел, как кто-то оценил мой вопрос, могу ли я получить объяснение, почему? – liljoshu

+0

Я этого не сделал, но ваш код неполный. – mdamia

ответ

1

попробовать это

use Request; 
class ThatOneController extends \BaseController{ 

public function getValue(){ 
    print_r(Request::all()); 
} 
+0

, я нашел это непростым, прежде чем я заметил ваш ответ, но это лучше, чем оригинальное решение, которое я опубликовал. – liljoshu

+1

@liljoshu хорошо, что это работает. Спасибо за принятие ответа. – mdamia

0

Оказывается, что даже если $ _post не всегда доступен изнутри функции контроллера, то - это, доступный непосредственно из маршрутов. Это немного взломанный, и «не путь laravel», но вы можете использовать $ _post в маршрутах, чтобы получить и перейти в другие переменные, чтобы вернуться в нормальный поток.

+0

Это неправда, '$ _POST' является глобальным и может быть доступен из любого места. можете ли вы опубликовать свои полные js? – mdamia

+0

Я нашел трудный путь, но laravel на самом деле иногда может очистить $ _POST, прежде чем вы попадете на целевую страницу, так что он больше не доступен для внутренних страниц, и вам нужно пройти через все, чтобы добраться до него. Я также нашел Request :: all получил мне свои данные, а если $ _POST возвращался пустым, несмотря на то, что javascript проходил мимо $ .post – liljoshu