Распечатайте значение переменной JavaScript внутри тега php, используя шаблон лезвия в Laravel

Предположим, это код JS, и я хочу напечатать значение id. Здесь id — это переменная, значение которой передается в функцию jq.

function follow_or_unfollow(id,action){         
     myUrl = "{{ action('FollowsController@show', 'id') }}" ;               
}

Если мы упомянем 'id', он покажет строку идентификатора.

PS. здесь {{ используется как php-код в шаблоне лезвия.

Теперь мне нужно распечатать переменную скрипта внутри php-кода.


person Sagiruddin Mondal    schedule 24.11.2013    source источник


Ответы (3)


Боюсь, то, о чем вы просите, невозможно. По той простой причине, что JavaScript — клиентская часть, а PHP — серверная.

Вы всегда можете поместить PHP-код внутри JavaScript, потому что он просто отобразится там и не запустится в тот же момент. Принимая во внимание, что если вы хотите использовать переменную JavaScript внутри PHP, это означает, что вы пытаетесь получить доступ к переменной, которая даже не существует в момент, когда сервер обрабатывает запрос.

Обновлять

Для этого есть обходной путь. Вы можете передать данные, которые необходимы в JS, в качестве параметров в URL-адресе, а затем получить эти значения в PHP, используя $_GET.

person Aniket    schedule 24.11.2013
comment
Спасибо за ваш добрый ответ, сэр. да, тогда для меня это огромная проблема в настоящее время, когда я пытаюсь решить такую ​​проблему, как ЭТО-НАЖМИТЕ МЕНЯ. - person Sagiruddin Mondal; 24.11.2013
comment
Сэр спасибо! Но я уже пробовал. Он не может решить эту проблему, так как это значение должно быть получено контроллером в виде вызова контроллера, а не URL-адреса. - person Sagiruddin Mondal; 24.11.2013
comment
@SagiruddinMondal Тогда это действительно невозможно, потому что это противоречит общему правилу языков. - person Aniket; 24.11.2013
comment
Сэр, внутри тега js должна быть функция конкатенации? как myUrl = ‹?php action('FollowsController@destroy','/?›+id‹?php / ?›; - person Sagiruddin Mondal; 24.11.2013
comment
@SagiruddinMondal Мне непонятно, о чем вы здесь спрашиваете. Вы хотите PHP внутри JS или наоборот? - person Aniket; 24.11.2013

Вероятно, уже поздно, но я думаю, что у меня есть решение. Ваш код

myUrl = "{{ action('FollowsController@show', 'id') }}" ;

находится внутри блока javascript. Поэтому блейд-анализатор использует круглые скобки как объект javascript, а не как блейд-переменную. Таким образом, вы не можете использовать какие-либо переменные PHP внутри блока скрипта. В моем решении я бы заменил вашу строку на:

myUrl = "@include("public.default.js_values.myUrl")" ;

а затем создайте этот файл шаблона

(in your views folder)/public/default/js_values/myUrl.blade.php

и добавьте одну строку в этот файл

{{ action('FollowsController@show', 'id') }}

Таким образом, синтаксический анализатор Blade будет включать содержимое myUrl.blade.php. В файле будет правильно разрешено, что в скобках находится переменная, и возвращено значение переменной php (в вашем случае метод) обратно в javascript.

Я проверил это в похожей ситуации, и это сработало.

person shamanSK    schedule 20.02.2015

Просто используйте {!! $варс!!}.

var link = {!! "'".url('string/'.$vars.'/string')."'" !!};
person user1709694    schedule 14.10.2015