#html #laravel
#HTML #laravel
Вопрос:
Как вы собираетесь передавать параметры из контроллера в laravel в отдельный HTML-файл. Обратите внимание, что этот файл не включен в проект Laravel и является чистым HTML-файлом.
Контроллер как таковой;
public function sendWarranty($data)
{
// code here.
}
Параметры, которые я хочу передать в HTML-файл, взяты из $data
массива. В этом массиве есть такие значения, как имя клиента, номер телефона клиента, номер счета и так далее, К которым мне нужно было бы получить доступ в HTML-файле.
Это выполнимо?
В принципе, мой проект laravel прямо сейчас находится в URL, скажем www.xxx-cms.com ; html находится в другом URL, скажем www.xxx-warranty.com
Комментарии:
1. вы хотите, чтобы переменные из контроллера передавались в статический html-файл, который находится за пределами проекта и с другим URL? насколько я знаю, контроллер может передавать значение только в блейд-файл, который является php-страницей. также, пожалуйста, прочитайте об атаке XSS.
2. привет, @kapitan, спасибо за предупреждение. однако я не беспокоюсь об атаке xss, поскольку сайт защищен токенами аутентификации и доступен только в том случае, если пользователь получает sms. Также да, клиенты требуют, чтобы мы выводили веб-сайт за пределы проекта laravel, вот почему это так сложно
Ответ №1:
Можно загрузить файл через GuzzleHttp в переменную и выполнить некоторую замену строки, а затем вернуть переменную в качестве ответа
public function sendWarranty($data)
{
$client = new GuzzleHttpClient();
$res = $client->get('https://www.xxx-warranty.com')->getBody();
//some string replacements
$res= str_replace('$BRANDNAME$',$data['brand_name'],$res);
return $res;
}
Кстати, вы можете отправлять параметры в www.xxx-warranty.com используя это:
$res = $client->get('https://www.xxx-warranty.com',['param'=>'value',])->getBody();
Комментарии:
1. привет, спасибо за ответ! однако у меня вопрос, как мне тогда вызвать параметры в html? скажем, в моем html у меня есть ввод, подобный такому
<input class="form-control" type="text" id="brand" name="brand" value="{{!! $battery['brand_name'] !!}}" readonly>
должен ли я называть значение как таковое? в параметрах на контроллере я уже определил его как таковой['brand' => $battery['brand_name']]
2. К сожалению, если это был HTML, а не blade, вам придется обработать их как строку и заменить ее с помощью str_replace(‘$BRANDNAME $’,$brand_name, $ res);
3. ооо, но где мне это сделать? в контроллере или в самом html?
4. о, милая, а как насчет HTML-части? итак, мой
<input type="text id="brand" value="?">
нужно ли мне вносить какие-либо изменения здесь?5. значение=»$BRANDNAME $»