Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Вывод заголовка категории » 08.02.2019 22:30:32

Блин чувак ну ведь закреп сделали специально же для того, как нужно вопросы задавать 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>

изи

#2 Re: Laravel 5.x » пишу sitemap » 08.02.2019 22:10:29

У меня это так работает:

в роуте:

Route::get('/sitemap','SitemapController@index')->name('admin.sitemap.index');

во вьюхе:

<a class="alert alert-success" href="{{route('admin.sitemap.index')}}">Карта сайта</a>

ну у тебя нужно по идее то же самое, только без admin, у меня это просто в группе admin

#4 Laravel 5.x » После обновления до версии 5.7 перестала работать or в вьюхах » 08.02.2019 18:58:27

tanto39
Ответов: 2

Версия 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}}

Что-то гуглю, не нахожу, хотя где-то раньше читал о чем-то похожем, если мне не изменяет память.

#5 Re: Laravel 5.x » Вопрос по кукам » 12.01.2019 17:39:45

Все, понял, раньше можно было передавать массив, ларавель сам его сериализовал для кук, а теперь нет, нужно сериализовать, а потом записывать массив в куку.
Заработало так:

$cookieJar->queue(cookie('basket', json_encode($arToBasket), 1000000));

тема закрыта.

#6 Laravel 5.x » Вопрос по кукам » 12.01.2019 01:44:28

tanto39
Ответов: 1

Версия 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>');
            }
        });
    },

Подвал раздела