Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Блин чувак ну ведь закреп сделали специально же для того, как нужно вопросы задавать https://laravel.ru/forum/viewtopic.php?id=2073, мы тебе телепаты что ли. Если ты спрашиваешь то, что я понял - хоть немного прочитай документацию по ларавелю, это просто пипец - тупо делаешь запрос к базе и тянешь категорию, ты гонишь что ли? У меня например так
$category = new Category();
$category = $category->with('children')
->where('id', $category_id)
->get()->toArray();
а потом во вьюху передаешь
return view('public/categories/category', [
'result' => $category,
'items' => $items,
'itemsLink' => $itemsLink
]);
и во вьюхе выводишь
<h1>{{$result['title']}}</h1>
изи
У меня это так работает:
в роуте:
Route::get('/sitemap','SitemapController@index')->name('admin.sitemap.index');
во вьюхе:
<a class="alert alert-success" href="{{route('admin.sitemap.index')}}">Карта сайта</a>
ну у тебя нужно по идее то же самое, только без admin, у меня это просто в группе admin
Спасибо, братишка
Версия Laravel: 5.7.25
Версия PHP: 7.2
Операционная система и её версия: linux mint 18.2
Вендор и версия сервера БД: MySQL
Вендор и версия Веб-сервера: Apache 2.4
Медод подключения PHP: не знаю
Раньше во вьюшках работала такая конструкция:
{{$result['meta_key'] or META_KEY}}
Теперь почему то это перестает работать, теперь эта конструкция начинает везде выводить 1, а не то, что нужно. Где-то читал, что в ларавеле во вьюшках что-то относящееся к этому изменено в новой версии, как теперь более-менее нормально это написать, чтобы не нагромождать условные операторы типа:
@if($result['meta_key']) $result['meta_key'] @else META_KEY @endif}}
Что-то гуглю, не нахожу, хотя где-то раньше читал о чем-то похожем, если мне не изменяет память.
Все, понял, раньше можно было передавать массив, ларавель сам его сериализовал для кук, а теперь нет, нужно сериализовать, а потом записывать массив в куку.
Заработало так:
$cookieJar->queue(cookie('basket', json_encode($arToBasket), 1000000));
тема закрыта.
Версия Laravel: 5.7.20
Версия PHP: 7.2.13
Операционная система и её версия: Linux Mint 18.2
Вендор и версия сервера БД: вопрос не связан с SQL
Вендор и версия Веб-сервера: 2.4.18
Медод подключения PHP: я хз что это значит, ставил пхп из репозитория, наверное Apache Module
Задача, что должно происходить _в целом_, техническое задание:
В общем не чморите сильно, я нубас. Есть корзина на куках, в куке basket содержится id товара и его количество. При нажатии на кнопку "добавить в корзину" вызывается аякс запрос, который обращается к методу контроллера, в котором пишется кука.
Что произошло, текст ошибки:
Все работало идеально на версии ларавеля 5.5. После обновления до 5.7 это работать перестало, аякс запрос возвращает ошибку 500 в консоль браузера POST http://entercms/addtobasket 500 (Internal Server Error). Если комментировать строку где я создаю куку, запрос исполняется. Пробую разными способами, через Illuminate\Cookie\CookieJar, Illuminate\Http\Response и даже через стандартную пхпшную setcookie, а нифига кука не пишется и запрос не исполняется.
Чего вы ожидали получить:
Чтобы кука записывалась.
Варианты/догадки, почему это произошло:
Ну после обновления до 5.7 это произошло, может что-то изменилось у ларавеля касательно работы с куками, но я не пойму что.
Код:
Routes:
Route::post('/addtobasket','OrderController@addToBasket')->name('item.addtobasket');
Контроллер app\Http\Controllers\OrderController.php, вставил тут только этот проблемный метод для создания куки, остальное убрал во избежание простыни, там методы которые тут не участвуют.
use App;
use App\Order;
use App\Item;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Cookie\CookieJar;
use Symfony\Component\HttpFoundation\Cookie;
use Illuminate\Http\Response;
class OrderController extends Controller
{
use \App\ImgController;
use \App\PropEnumController;
use \App\HandlePropertyController;
use \App\CategoryTrait;
use \App\OrderTrait;
/**
* Add product to basket
*
* @param CookieJar $cookieJar
* @param Request $request
*/
public function addToBasket(CookieJar $cookieJar, Request $request)
{
$arToBasket = [];
$arToBasket = $request->cookie('basket');
$arToBasket[$request->productId] = [
'id' => $request->productId,
'quantity' => $request->quantity
];
$cookieJar->queue(cookie('basket', $arToBasket, 1000000));
}
метод в js для аякс запроса
/**
* Add product to basket
* @param productId
* @param quantity
*/
addToBasket: function (productId, quantity) {
if (!quantity || (quantity == 0) || (quantity < 0)) {
quantity = 1;
}
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: "POST",
url: "/addtobasket",
data: {productId:productId,quantity:quantity},
success: function(data) {
$('.order-button-wrap').html('<button class="order-button add-basket-active callback_content" onclick="enterShop.showBasket()">' +
'<i class="glyphicon glyphicon-shopping-cart"></i>' +
'<span>В корзине</span></button>');
}
});
},
Страницы 1