Laravel по-русски

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

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

#1 Re: Laravel 5.x » Переход на Postgres и проблема FOREIGN KEY » 18.04.2017 22:19:28

Lord_Alfred пишет:

Не заливайте фото на дропбокс) Ничего не отображается))

Видимо у меня отображаются, потому, что я авторизован sad не учел этот момент.

Выложил в папку https://www.dropbox.com/sh/xlb97oe6mpua … U6dDa?dl=0

#2 Laravel 5.x » Переход на Postgres и проблема FOREIGN KEY » 18.04.2017 21:14:18

kamwork
Ответов: 3

Всем привет.

Использую компонент Laratrust для ролей в проекте.

В нем есть таблица:

        // Create table for associating roles to users (Many-to-Many)
        Schema::create('role_user', function (Blueprint $table) {
            $table->integer('user_id')->unsigned();
            $table->integer('role_id')->unsigned();

            $table->foreign('user_id')->references('id')->on('users')
                ->onUpdate('cascade')->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('roles')
                ->onUpdate('cascade')->onDelete('cascade');

            $table->primary(['user_id', 'role_id']);
        });

При попытке сделать Seed, получаю ошибку:

Seed


Error

Подскажите, куда копать?

#4 Laravel 5.x » Когда все таки использовать InnoDB ? » 18.11.2016 11:48:08

kamwork
Ответов: 4

Всем привет.

Что-то я запутался. Может кто то на пальцах сказать когда стоит использовать InnoDB  ? smile

#5 Laravel 5.x » Подскажите про пакет laravel-nestedset и функцию boot() » 17.11.2016 18:46:22

kamwork
Ответов: 1

Всем привет.

Поставил сей чудный пакет, за что автору огромное спасибо. Сильно упростило жизнь.

https://github.com/lazychaser/laravel-n … ing-a-tree

Подглядывал по статье https://habrahabr.ru/post/279233/

Но не смог победить функцию boot() (из статьи) с проверкой на изменение значений slug или parent_id для перестроения path у потомков.

Функция ругается на то, что '_lft' и  '_rht' пустые при сохранении.

Может кто сталкивался? Моих скудных знаний не хватает победить беду smile

#6 Re: Laravel 5.x » Ну могу подружить AuthType Basic с laravel » 04.11.2016 13:35:00

hzone пишет:
hzone пишет:

переходи на nginx/php-fpm

У меня PHP 7 вроде через php-fpm и заведен. А nginx надо покурить как прикрутить smile

#7 Re: Laravel 5.x » Ну могу подружить AuthType Basic с laravel » 04.11.2016 09:49:19

hzone пишет:

1. Auth после ифреврайта
2. логи апача смотри, но подозреваю, что проблема в отсутствии AllowOverride all - то есть где-то что-то запретило какую-то объявленную директиву.
3. переходи на nginx/php-fpm


Забыл написать.. Ошибка была в том, что я не верно путь до файла с паролем указывал sad глупая ошибка

#8 Re: Laravel 5.x » Голосуем за перевод Laracasts » 30.10.2016 12:43:49

А доля России в просмотре ларакаст и правда очень и очень мала:

https://www.similarweb.com/website/lara … m#overview

#9 Re: Laravel 5.x » Голосуем за перевод Laracasts » 30.10.2016 12:41:05

Всем привет!

Присоединяюсь к благодарностям за перевод.

Если рассуждать, что без английского не надо вообще программировать, тогда зачем вообще все это тут? У меня крайне скудные знания английского, но я смотрю уроки Джефри, не понимая больше половины речи, но я нахожу ответы на вопросы, я вижу как сделать, но не всегда понимаю почему именно так он делает. Тут и помогают переводы.

У меня программирование - хобби, но при этом не хочется говнокодить. У нас очень не хватает именно уроков раскрывающих как нужно архитектурно делать, все примеры блогов или ToDo весьма поверхностные, выше писали про 25 минут, это реально так. Тут у человека блог занял 46 уроков, много интересного для себя подсмотрел, но опять не знание языка накладывает ограничение на понимание почему он делал так, а не иначе некоторые вещи.

#10 Laravel 5.x » Ну могу подружить AuthType Basic с laravel » 28.10.2016 21:50:47

kamwork
Ответов: 9

Всем привет.

Хочу закрыть тестовый сервер паролем, сгенерировал .htpasswd, добавил в .htaccess:

AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /home/www/test.site.ru/public/.htpasswd
Require valid-user

Итоговый код получился:

    AuthType Basic
    AuthName "Password Protected Area"
    AuthUserFile /home/www/test.site.ru/public/.htpasswd
    Require valid-user

<IfModule mod_rewrite.c>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Сама авторизация срабатывает, но затем выдается ошибка:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at site_admin@gmail.com to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Как их подружить?

#11 Re: Laravel 5.x » Как правильно сделать валидацию пользователей в 5.3? » 28.10.2016 18:46:12

XFR пишет:

Возможно будет полезным. Джефри вчера как раз добавил видео о валидации в 5.3:
https://laracasts.com/series/whats-new- … pisodes/18

Отличный урок smile Мои задачи по валидации решились, все круто. Есть еще вопросы, для более сложной валидации, но это уже доки курить

#12 Re: Laravel 5.x » У всех роуты раздулись в 5.3? » 28.10.2016 15:07:13

Всем спасибо. Был не прав. Route::resource действительно отличное решение.

#13 Re: Laravel 5.x » У всех роуты раздулись в 5.3? » 26.10.2016 21:38:24

AlexeyMezenin пишет:
kamwork пишет:

Ну зайду я в контроллер через 3и месяца, буду вспоминать smile Надо лесть в route:list

Наоборот, с простыней из get/post маршрутов такая история. С resource все понятно и совсем не нужно лезть в route:list.

Может есть где пример хороший посмотреть?

#14 Re: Laravel 5.x » У всех роуты раздулись в 5.3? » 26.10.2016 21:27:02

Androbim пишет:
kamwork пишет:

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

То есть? Какая там может быть прозрачность, да и зачем? Команда route:list выведет все, что нужно. Роут, параметры, способ передачи, контроллер и метод. А что еще надо?


Ну зайду я в контроллер через 3и месяца, буду вспоминать smile Надо лесть в route:list

#15 Re: Laravel 5.x » У всех роуты раздулись в 5.3? » 26.10.2016 20:12:34

Androbim пишет:
kamwork пишет:

Да как то не прозрачно там все выглядит. В контроллере сходу не понятно, что POST, что GET

php artisan route:list

И? smile Как мне кажется, прозрачность и понятность должна быть в самом контроллере

#16 Re: Laravel 5.x » У всех роуты раздулись в 5.3? » 26.10.2016 20:09:36

melihovv пишет:

Используй Route::resource()

Да как то не прозрачно там все выглядит. В контроллере сходу не понятно, что POST, что GET

#17 Laravel 5.x » У всех роуты раздулись в 5.3? » 26.10.2016 19:32:44

kamwork
Ответов: 11

Сейчас у меня роут выглядит так:

Route::get('admin/management', 'admin\AdminManagementController@index');
Route::get('admin/management/create', 'admin\AdminManagementController@getCreate');
Route::post('admin/management/create', 'admin\AdminManagementController@postCreate');
Route::get('admin/management/edit/{id}', 'admin\AdminManagementController@getEdit');
Route::post('admin/management/edit', 'admin\AdminManagementController@postEdit');

Ранее он же выглядел, так:

Route::controllers(['/admin/management'              => 'AdminManagementController']);

Или я все же через #опу делаю? smile

#18 Re: Laravel 5.x » Как правильно сделать валидацию пользователей в 5.3? » 26.10.2016 19:27:57

XFR пишет:

Возможно будет полезным. Джефри вчера как раз добавил видео о валидации в 5.3:
https://laracasts.com/series/whats-new- … pisodes/18

Спасибо. Посмотрю

#19 Re: Laravel 5.x » Роли пользователей в 5.2 - 5.3 » 25.10.2016 20:09:48

RRA пишет:

Здравствуйте.

Я совсем новичок в программировании и по сути взялся за непосильную мне задачу. Но выхода в данный момент у меня особо нет.

У меня вопрос по https://github.com/santigarcor/laratrust

Первоначально поправил роли и права доступа по умолчанию в laratrust_seeder, запустил php artisan db:seed. База заполнилась нужными значениями.

Дальше, с горем пополам я сделал возможность добавлять новые группы пользователей (роли) через веб-интерфейс.
На странице добавления выводятся поля для роли (имя, отображаемое имя и описание), а ниже список прав доступа из таблицы permissions с радиокнопками (Разрешено/Запрещено).
Все сохраняется, роли можно менять, удалять. В базе все отображается как должно.
Только не работает все равно. Работает только если поменять в laratrust_seeder и перезапустить db:seed.

Я уже и базу сверил. Там точно такие же значения, что и после сохранения моей формы.

Получается бред какой-то. Права берутся вроде как из базы, но при этом все равно зависят жестко от laratrust_seeder? Или я тут что-то совсем не понимаю?


Что-то вы делаете ни так. Использую этот же пакет, все данные идут из базы.

#20 Re: Laravel 5.x » Как правильно сделать валидацию пользователей в 5.3? » 25.10.2016 19:28:02

Разобрался с валидацией и стандартным методом, просто шлем post запрос на /register

Но как победить предустановленную валидацию, мне в случаи регистрации через админку нужен одни редирект, через сайт другой.

#21 Re: Laravel 5.x » Как правильно сделать валидацию пользователей в 5.3? » 25.10.2016 19:01:58

Androbim пишет:

Что значит, не знаете? Вы же сами пишете:

kamwork пишет:

В модели User правил валидации нет, есть в контроллере RegisterController, но они protected, т.к. он вызывается из trait RegistersUsers.

Вы не в курсе, где находятся контроллеры? Но... это уж как-то слишком.
И зачем лезть в модель? "Все украдено до нас!" (С)


Лезу в модель, потому что так учили smile Можно конечно поглумиться надо мной, а можно и помочь smile

#22 Re: Laravel 5.x » Как правильно сделать валидацию пользователей в 5.3? » 25.10.2016 18:36:25

Androbim пишет:

Если пролистнете контроллер вниз, есть там такое?

protected function validator(array $data) {
        return Validator::make($data, [
                    'name' => 'required|max:255',
                    'email' => 'required|email|max:255|unique:users',
                    'password' => 'required|min:6|confirmed',
        ]);
    }

Эта функция вызывается в register()

$this->validator($request->all())->validate();

Да, но я не понял как добраться до контроллера. Я видимо не верно создаю пользователя, я делаю это через модель.

    public function postCreate(Request $request)
    {
        $user = User::create($request->all());
        $user->save();

        $administrator = Role::where('name', '=', 'administrator')->firstOrFail();
        $user->attachRole($administrator);

        return redirect()->action('\App\Http\Controllers\admin\AdminManagementController@index');
    }

#23 Re: Laravel 5.x » Как правильно сделать валидацию пользователей в 5.3? » 25.10.2016 18:24:39

Androbim пишет:

А зачем изворачиваться? Что, собственно, не устраивает?

не хватает опыта сделать правильно, вот и прошу совет smile

#24 Laravel 5.x » Как правильно сделать валидацию пользователей в 5.3? » 25.10.2016 17:39:09

kamwork
Ответов: 12

Всем привет.

В модели User правил валидации нет, есть в контроллере RegisterController, но они protected, т.к. он вызывается из trait RegistersUsers.

У меня два пути регистрации пользователей: из админки и с сайта.

Собственно вопрос, как сделать правильно? Вынести в модель User правила валидации и отталкиваться от них, или же как то извернуться и использовать то, что встроено в лару? Если второй вариант, то как?

Сильно не пинайте =)

#25 Re: Laravel 5.x » Редирект при авторизации » 25.10.2016 13:23:48

AlexeyMezenin пишет:
kamwork пишет:

Меня вот еще мучает вопрос, а как-то можно редиректить в зависимости от роли? Админов в админку, пользователей на сайт.

В 5.3 переопредели в контроллере Auth\LoginController.php, метод sendLoginResponse(). Скопируй оригинальный метод, но в конец измени на что-то вроде:

return redirect(auth()->user()->isAdmin() ? 'admin' : '/');

Спасибо! Сделал без переноса всего метода, все работает.

Добавил в LoginController.php, не перенося весь метод:

protected function sendLoginResponse() 
{
        return redirect(auth()->user()->hasRole(['superadministrator', 'administrator', 'partner']) ? '/admin' : '/');
    }

Работает, но не уверен, что верно сделал, исходный класс выглядит так:

  protected function sendLoginResponse(Request $request)
    {
        $request->session()->regenerate();

        $this->clearLoginAttempts($request);

        return $this->authenticated($request, $this->guard()->user())
                ?: redirect()->intended($this->redirectPath());
    }

Стоит ли переносить ?

$request->session()->regenerate();

$this->clearLoginAttempts($request);

И не должен ли return выглядеть:

 return $this->authenticated($request, $this->guard()->user()->hasRole(['superadministrator', 'administrator', 'partner']))
                 ? '/admin' : '/');

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