Laravel по-русски

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

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

#3 Re: Laravel 5.x » Авторизация » 13.10.2017 11:09:08

Менял ли контроллер? Менял ли blade файл авторизации?

#5 Re: Laravel 5.x » Сохранение JSOn строку без проблем » 29.09.2017 12:05:22

Решено! Ошибка была в том, что я в массиве делал ещё json массив.
Т.е. так правильно:

'site_role' => json_encode([
                'news' => [
                    'show' => $request->newsShow,
                    'add' => $request->newsAdd,
                    'edit' => $request->newsEdit,
                    'delete' => $request->newsDelete,
                    'editMy' => $request->newsEditMy,
                    'deleteMy' => $request->newsDeleteMy,
                    'reason' => $request->newsReason,
                    'premoderator' => $request->newsPremoderator
                ],
                'comments' => [
                    'show' => $request->commentsShow,
                    'add' => $request->commentsAdd,
                    'edit' => $request->commentsEdit,
                    'delete' => $request->commentsDelete,
                    'editMy' => $request->commentsEditMy,
                    'deleteMy' => $request->commentsDeleteMy,
                    'reason' => $request->commentsReason,
                    'premoderator' => $request->commentsPremoderator
                ]
            ]),

#6 Laravel 5.x » Сохранение JSOn строку без проблем » 29.09.2017 11:22:56

dima9595
Ответов: 1

Делаю сохранение данных. Некоторые данные хранятся как varchar и сохраняются без проблем, а некоторые должны конвертироваться в json - в этом и проблема.
Сохраняется так:

{"news": "{\"add\":null,\"edit\":null,\"delete\":null,\"editMy\":null,\"deleteMy\":null,\"reason\":\"on\",\"premoderator\":\"on\"}", "comments": "{\"add\":\"on\",\"edit\":null,\"delete\":null,\"editMy\":null,\"deleteMy\":null,\"reason\":\"on\",\"premoderator\":null}"}

А нужно так:

{"news": {"add": false, "edit": false, "show": true, "delete": false, "editMy": false, "reason": true, "deleteMy": false, "premoderator": true}, "comments": {"add": true, "edit": false, "show": true, "delete": false, "editMy": false, "reason": true, "deleteMy": false, "premoderator": false}}

Сохраняю многомерный массив:

'site_role' => json_encode([
   'news' => json_encode([
      'add' => $request->newsAdd,
      'edit' => $request->newsEdit,
      'delete' => $request->newsDelete,
      'editMy' => $request->newsEditMy,
      'deleteMy' => $request->newsDeleteMy,
      'reason' => $request->newsReason,
      'premoderator' => $request->newsPremoderator
   ]),
   'comments' => json_encode([
      'add' => $request->commentsAdd,
      'edit' => $request->commentsEdit,
      'delete' => $request->commentsDelete,
      'editMy' => $request->commentsEditMy,
      'deleteMy' => $request->commentsDeleteMy,
      'reason' => $request->commentsReason,
      'premoderator' => $request->commentsPremoderator
      ])
   ])

Как это правильно реализовать, что бы сохранение и вывод был корректный.

PS: вывожу следующим образом:
В модели делаю так:

protected $casts = [
   'site_role' => 'array',
   'moder_role' => 'array',
   'admin_role' => 'array',
];

В самом view:

$role->site_role['news']['editMy']

#7 Re: Laravel 5.x » На какой версии делать проект, подскажите хорошие пакеты? » 17.08.2017 11:57:24

1. Всё зависит от самого пакета, если версия пакеты не поддерживается laravel или php, то и не будет устанавливаться.
2. Лучше написать свою. Так как там будет тот функционал, который нужен.
3. Данный шаблон проектирования уже есть в laravel, просто дописать под свои нужды.
4. Самую последнюю из стабильных.
На счёт домена, скорей всего он просто не припаркован к хостингу.

#11 Re: Laravel 5.x » Мультизагрузка изображений » 09.08.2017 11:38:37

Ну что, ни кто что ли не работал с мультизагрузкой?
PS:

$validator = Validator::make($request->all(), [
  ... ещё проверки
  'preview_news.*' => 'required|image|mimes:jpg,jpeg,png'
]);

Так получилось сделать проверку...

#12 Re: Laravel 5.x » Мультизагрузка изображений » 09.08.2017 08:13:27

Ещё прикол, если выводить $request->preview_news через return, то данных нет, только пустой массив, а если же выводить через dd, то все файлы показываются.

#13 Re: Laravel 5.x » Мультизагрузка изображений » 08.08.2017 15:37:23

Нашёл небольшой код, в котором проверяются массивы (что у меня и есть при загрузке изображений):

$validator = Validator::make($request->all(), [
  'person.*.email' => 'email|unique:users',
  'person.*.first_name' => 'required_with:person.*.last_name',
]);

Стоит ли от него отталкиваться для валидации мультизагрузки изображений?

#14 Laravel 5.x » Мультизагрузка изображений » 08.08.2017 09:19:01

dima9595
Ответов: 5

Всем доброго времени суток!
Делаю мультизагрузку изображений, но почему-то не получается загрузить все изображения. Допустим, выбираю 3 изображения, а загружается 2. МБ кто нибудь подскажет как работать с мультизагрузкой? Так же, при мультизагрузке, в валидации, не могу использовать проверку на image и mime типы...

Контроллер:

$this->validate($request, [
                'title_news' => 'required|min:3|unique:news',
                'short_news' => 'required|min:5',
                'full_news' => 'required|min:5,',
                'preview_news' => 'required|image',
            ]);

            $commentsModerator = Auth::user()->role->news_role['premoderator_role'];    // Премодерация
            $addNews = News::create([
                'title_news' => $request->title_news,
                'short_news' => $request->short_news,
                'full_news' => $request->full_news,
                'author_news' => $userID,
                'commentsModerator_news' => $commentsModerator
            ]);

            if($addNews){
                foreach($request->file('preview_news') as $file){
                    // Оригинальное изображение
                    $fileNameOriginal[] = $addNews['id_news'] . '-' . time() . '-original.jpg'; // 1-1502110636-original.jpg
                    $uploadOriginal = Image::make($file)->save(public_path() . '/uploads/posts/news/preview/original/' . $addNews['id_news'] . '-' . time() . '-original.jpg');
                    // 200x200 изображение
                    $fileName200[] = $addNews['id_news'] . '-' . time() . '-200.jpg'; // 1-1502110636-200.jpg
                    $uploadOriginal200 = Image::make($file)->resize(200, 200)->save(public_path() . '/uploads/posts/news/preview/200/' . $addNews['id_news'] . '-' . time() . '-200.jpg');
                    // 50x50 изображение
                    $fileName50[] = $addNews['id_news'] . '-' . time() . '-50.jpg'; // 1-1502110636-50.jpg
                    $uploadOriginal50 = Image::make($file)->resize(50, 50)->save(public_path() . '/uploads/posts/news/preview/50/' . $addNews['id_news'] . '-' . time() . '-50.jpg');
                }

                $addPreview = Preview::create([
                    'idUser_preview' => $userID,
                    'idNews_preview' => $addNews['id_news'],
                    'original_preview' => json_encode($fileNameOriginal),
                    'x200_preview' => json_encode($fileName200),
                    'x50_preview' => json_encode($fileName50)
                ]);

                return redirect()->route('home')->with('successMessages', 'Вы успешно добавили новость!');
            }else{
                return redirect()->route('home')->with('warningMessages', 'Ошибка добавлении новости!');
            }

View:

<div class="panel-body">
        {{ Form::open(['route' => ['News.postAddNews', Auth::user()->id_users], 'files' => true, 'enctype' => 'multipart/form-data']) }}
        <div class="form-group {{ ($errors->first('title_news')) ? 'has-error' : '' }}">
            <label for="title_news" class="control-label">Заголовок новости:</label>
            <input type="text" class="form-control" name="title_news" placeholder="{{ ($errors->first('title_news')) }}">
        </div>

        <div class="form-group {{ ($errors->first('short_news')) ? 'has-error' : '' }}">
            <label for="short_news" class="control-label">Короткая новость:</label>
            {{ Form::textarea('short_news', '', ['class' => 'form-control', 'placeholder' => $errors->first('short_news')]) }}
        </div>

        <div class="form-group {{ ($errors->first('full_news')) ? 'has-error' : '' }}">
            <label for="full_news" class="control-label">Текст новости:</label>
            {{ Form::textarea('full_news', '', ['class' => 'form-control', 'placeholder' => $errors->first('full_news')]) }}
        </div>

        <div class="form-group {{ ($errors->first('preview_news')) ? 'has-error' : '' }}">
            <label for="preview_news">Превью картинка</label>
            <input type="file" name="preview_news[]" multiple="true" accept="image/jpeg,image/png,image/jpg">
            <p class="help-block">{{ $errors->first('preview_news') }}</p>
        </div>

        <div class="form-group">
            <button type="submit" class="btn btn-success"><i class="glyphicon glyphicon-plus"></i> Добавить</button>
        </div>
        {{ Form::close() }}
    </div>

#15 Re: Laravel 5.x » Как считывать json ответ во view? » 27.07.2017 15:44:09

Auth::logout() ничего не возвращает, void. А ничего - false

Странно...Раньше так делал и работало...

#16 Re: Laravel 5.x » Как считывать json ответ во view? » 27.07.2017 15:43:44

Как я понял, у тебя столбец в JSON и ты хочешь его автоматически преобразовать в массив. В таком случае используй преобразотватели в JSON, которые созданы как раз для таких случаев:

ВО!) То что надо, спасибо!

#17 Re: Общий раздел » Оптимизация изображений с помощью spatie/laravel-image-optimizer » 27.07.2017 07:46:48

Возможно оптимизация происходит в плане уменьшения "веса" файла?!

#18 Re: Laravel 5.x » Как считывать json ответ во view? » 27.07.2017 07:35:01

в php - json_decode

Только такой вариант для преоброзования json в объект?

И ещё вопрос:
Сделал функционал выхода пользователя из аккаунта:

public function getLogout(){
        if(Auth::logout()){
            return redirect()->route('home')->with('successMessages', 'Вы успешно вышли из аккаунта!');
        }else{
            return redirect()->route('home')->with('errorMessages', 'Ошибка при выхода из аккаунта!');
        }
}

Но выполняется почему то код в else: return redirect()->route('home')->with('errorMessages', 'Ошибка при выхода из аккаунта!');. При этом из аккаунта выходит. В чём может быть дело?

#19 Laravel 5.x » Как считывать json ответ во view? » 26.07.2017 16:50:32

dima9595
Ответов: 13

Получаю данные о профиле. Некоторые поля необходимы хранить в виде json (в БД). Во view не могу получить отдельные данные этого json ответа. Как быть?
Немного растолкую на всякий...
Получаю данные о профиле по стандарту: User::where(...). В БД профиля хранится несколько строк, в которых сохраняется json, например "{"f_users":"Имя","i_users":"Фамилия","o_users":"Отчество"}".
Все данные можно просто выводить через $profile->login_users и т.п. А вот, например, когда получаю json строку, то выводится только JSON код. Как обратиться, например, к f_users?

#20 Re: Laravel 5.x » Не работает авторизация » 21.07.2017 11:34:45

о порой возникает необходимость использовать middleware в контроллерах

можно пример?:)

#21 Re: Laravel 5.x » Не работает авторизация » 21.07.2017 07:46:54

Забыл ответить как я решил данную проблему:
Нужно было просто убрать $this->middleware('guest')->except('logout'); Какая же простая проблема была, а я в тот раз так закипишевал. Просто раньше я в контроллере не ставил проверку middleware.
Кстати, посоветуйте пожалуйста, как лучше работать с middleware, в роуте или контроллере?

#22 Re: Laravel 5.x » Laravel 5.4 как правильно вызвать old для Select и File в форме после » 15.06.2017 23:01:07

Как я знаю - такого делать нельзя. Ну по крайней мере такое не видел ещё.

#23 Re: Laravel 5.x » Не работает авторизация » 14.06.2017 15:46:10

constb пишет:

сессия и должна оставаться, просто из сессии удаляется информация об авторизации

проблема в том, что происходит просто редирект, а данные о пользователе остаются(

#24 Re: Laravel 5.x » Не работает авторизация » 14.06.2017 12:40:02

Эта проблема решена!) Вместо encrypt нужно было bcrypt юзать для хэширования пароля.
Теперь другая проблема появилась: не выходит из аккаунта через Auth::logout(). Просто редиректит на главную страницу, а сессия остаётся.

#25 Re: Laravel 5.x » Не работает авторизация » 13.06.2017 19:49:39

covobo пишет:

Все, что делает attempt (в твоем случае) - это ищет модель по логину и сравнивает твой пароль в открытом виде (который ты вбил в форму авторизации) с хэшем.

Может у тебя несколько юзеров с одним логином?

Вот именно только 1 юзер.

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