Laravel по-русски

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

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

#76 Re: Laravel 5.x » транслитерация и создание slug » 20.11.2017 14:02:49

sam

как вариант:

    public static function transliterate ($string){
        $str = mb_strtolower($string, 'UTF-8');

        $leter_array = array(
            'a' => 'а',
            'b' => 'б',
            'v' => 'в',
            'g' => 'г',
            'd' => 'д',
            'e' => 'е,э',
            'jo' => 'ё',
            'zh' => 'ж',
            'z' => 'з',
            'i' => 'и,i',
            'j' => 'й',
            'k' => 'к',
            'l' => 'л',
            'm' => 'м',
            'n' => 'н',
            'o' => 'о',
            'p' => 'п',
            'r' => 'р',
            's' => 'с',
            't' => 'т',
            'u' => 'у',
            'f' => 'ф',
            'kh' => 'х',
            'ts' => 'ц',
            'ch' => 'ч',
            'sh' => 'ш',
            'shch' => 'щ',
            '' => 'ъ',
            'y' => 'ы',
            '' => 'ь',
            'yu' => 'ю',
            'ya' => 'я',
        );

        foreach ($leter_array as $leter => $kyr){
            $kyr = explode(',',$kyr); // кирилические строки разобьем в массив с разделителем запятая.
            // в строке $str мы пытаемся отыскать символы кирилицы $kyr и все найденные совпадения заменяем на ключи $leter
            $str = str_replace($kyr, $leter, $str);
        }

        // теперь необходимо учесть правильность формирования URL
        // поиск и замена по регулярному выражению.
        // перв. выраж. указываем рег выражение. втор.выраж. строка или массив строк для замены
        //   //  регуляр выражение  ()+  может повторяться 1 и более раз.,   \s пробельный символ сразу же заменяется на '-'
        // | Логическое или. либо то условие либо что указано справа от |  притом справа укажем диапазон [A-Za-z0-9-]
        //  ^ Логическое отрицание. т.е. заменяем либо пробельный символ на тире, либо любой другой символ, что не входит в указанный диапазон.
        $str = preg_replace('/(\s|[^A-Za-z0-9-])+/', '-', $str);
        $str = trim($str,'-'); // если в конце появится тире, то его удаляем.

        return $str;
    }

и юзай как обычный свой хелпер.
$name = Helpers::transliterate($request->name);

#77 Re: Laravel 5.x » Хелпер asset » 16.11.2017 16:52:52

sam

либо ждать ответа от спецов, либо над твоим сообщением есть кнопка "Поиск" загугли там asset и во всяких разных темах подобное уже обсуждалось. гдето читал.. к примеру https://laravel.ru/forum/viewtopic.php?id=2993 .. можно и там поспрашивать

#78 Re: Laravel 5.x » Ошибка в контроллере. ПОМОГИТЕ! » 16.11.2017 11:50:02

sam

https://laravel.ru/forum/viewtopic.php?id=2799  ларавель обновляется каждые пол года. актуальные уроки не найдешь. в ссылке 5.2 и до сих пор актуально. редко когда там код пишется уже по другому. но суть вкурить можно. сам 2 месяца назад начал их вдуплять и почти все просмотрел/воспроизвел. под 55м уроком комменты оставил по проблемным местам с 5.5

#79 Re: Laravel 5.x » Авторизация и Регистрация Одной формой » 14.11.2017 10:51:01

sam

Начал изучать Ларавель с столкунлся с пробелмой как  реализовать не имею понятия

https://goo.gl/8uHrNY 100 уроков по ларавель. там версия 5.2 но на 96% актуально до 90х уроков. сам лично по ним учился, 2 месяца назад нашел.. под 55м уроком комментарии оставлял где проблемные места встречал

#80 Re: Laravel 5.x » Авторизация + Ajax » 10.11.2017 19:04:24

sam

Лично я раньше делал чтото типа таво )))) (код по идее рабочий, мой, в своих черновиках нашел, но не проверял)

{{ Form::submit('Отправить', ['class' => 'btn btn-primary', 'onclick'=>'AjaxCreateValid()']) }}


        function AjaxCreateValid()
        {
            var name = $("#name").val();
            var family = $("#family").val();
            var phone = $("#phone").val();
            var email = $("#email").val();
            var reason = $("#reason").val();
            if (name && family && phone && email && reason && test_email == true) {
                $('#succs_valid_created_email').show().delay(5000).fadeOut();   //  Сообщение что запись создана, но сабмит перебивает.
            } else {
                if (!name) {
                    $('#error_valid_created_name').show().delay(5000).fadeOut();
                    return null;
                }
                if (!family) {
                    $('#error_valid_created_family').show().delay(5000).fadeOut();
                    return null;
                }
                if (!phone) {
                    $('#error_valid_created_phone').show().delay(5000).fadeOut();
                    return null;
                }
                if (!email) {
                    $('#error_valid_created_email_empty').show().delay(5000).fadeOut();
                    return null;
                }else {
                    // если поле почты заполнено, проверяем ее валидность
                    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                    var test_email = regex.test(email);
                    if (test_email == false){
                        $('#error_valid_created_email').show().delay(5000).fadeOut();
                        return null;
                    }
                }
                if (!reason) {
                    $('#error_valid_created_reason').show().delay(5000).fadeOut();
                    return null;
                }

                return false;
            }

            return true;
        }



        <div id="succs_valid_created_email" class="alert alert-success" hidden="true" align="center">
            Запись добавлена
        </div>
        <div id="error_valid_created_name" class="alert alert-danger" hidden="true" align="center">
            Укажите своё Имя
        </div>
        <div id="error_valid_created_family" class="alert alert-danger" hidden="true" align="center">
            Укажите свою Фамилию
        </div>
        <div id="error_valid_created_phone" class="alert alert-danger" hidden="true" align="center">
            Укажите свой телефон
        </div>
        <div id="error_valid_created_email_empty" class="alert alert-danger" hidden="true" align="center">
            Укажите свой электронный почтовый адрес
        </div>
        <div id="error_valid_created_email" class="alert alert-danger" hidden="true" align="center">
            Формат почты указан не верно
        </div>
        <div id="error_valid_created_reason" class="alert alert-danger" hidden="true" align="center">
            Укажите причину обращения
        </div>

#81 Re: Laravel 5.x » Авторизация + Ajax » 10.11.2017 18:53:11

sam

Дак вот же
https://yadi.sk/i/uxps8Dwq3PayKd
не? разве в 5.4 этого нет??

там вродеб как должно быть:
метод регистрации

    public function register(Request $request)
    {
        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

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

если посмотреть в  $this->validator, то:

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
 // даже по указанной таблице проверяет уникальность почты и гоняет по маскам email
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

сама вьюха. скопировал саму суть

            <div class="panel panel-default">
                <div class="panel-heading">Register</div>

                <div class="panel-body">
                    <form class="form-horizontal" method="POST" action="{{ route('register') }}">
                        {{ csrf_field() }}

                        <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
                            <label for="name" class="col-md-4 control-label">Name</label>

                            <div class="col-md-6">
                                <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}" required autofocus>

                                @if ($errors->has('name'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('name') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('login') ? ' has-error' : '' }}">
                            <label for="login" class="col-md-4 control-label">Login</label>

                            <div class="col-md-6">
                                <input id="login" type="text" class="form-control" name="login" value="{{ old('login') }}" required autofocus>
                                @if ($errors->has('login'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('login') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label for="email" class="col-md-4 control-label">E-Mail Address</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required>

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label for="password" class="col-md-4 control-label">Password</label>

                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control" name="password" required>

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>

                            <div class="col-md-6">
                                <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    Register
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>

#82 Re: Laravel 5.x » Многие ко многим. Удаление. » 02.11.2017 15:17:28

sam

увы нет.. onDelete('cascade') я упустил. нужно будет както поправить миграциями..
кстати клевая ссылочка в подписях)
П.С. да, по ссылке создал миграцию и все стало норм работать. код сократился до:

    public function destroy($id)
    {
        if (\Gate::denies('ADMIN', new \Corp\User)) {
            abort(403);
        }
        if (Permissions::find($id)->delete()) {
            return redirect('admin/permiss/index')->with(Session::flash('status', 'Привилегия Удалена!'));
        }
        return redirect('admin/permiss/index')->with(Session::flash('error', 'Не возможно удалить привилегию!' . ' ID ' . $id));
    }

#83 Re: Laravel 5.x » Многие ко многим. Удаление. » 02.11.2017 13:07:16

sam

вот вечно так.. пол дня потеряешь, сделать не можешь, как вопрос задашь, так через 5 минут сам решаешь...
Permissions::find($id)->roles()->detach();
Permissions::find($id)->delete();

#84 Laravel 5.x » Многие ко многим. Удаление. » 02.11.2017 12:29:43

sam
Ответов: 4

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

Таблица permissions (id,name)

    public function roles(){
        return $this->belongsToMany('Corp\Role','permission_role');
    }

Таблица roles (id,name)

   public function perm(){
        return $this->belongsToMany('Corp\Permissions', 'permission_role');
    }

Связующая таблица permission_role (id,role_id,permissions_id)

        Schema::table('permission_role', function (Blueprint $table) {
            $table->integer('role_id')->unsigned()->default(1);
            $table->foreign('role_id')->references('id')->on('roles'); // references - указывает на какое поле ссылается данный идентификатор. мы ссылаемся на id и указываем какой таблицы.

            $table->integer('permission_id')->unsigned()->default(1);
            $table->foreign('permission_id')->references('id')->on('permissions');
        });

Сохранение привилегии (просмотр страницы админа) для определенной роли(модератора) происходит с помощью метода "sync".
"sync" - Реализует синхронизацию связанных моделей через связующую таблицу. т.е. если какое-то поле скрыли за ненадобностью и отправили и оно не попало в реквест, то данные по этому полю будут удалены.

Метод удаления:
    public function destroy(59)
    {
        $res = Permissions::find(59);
        $res = $res->roles()->sync(59);

     ретурн ок.
}
данные из связующей таблицы сперва удаляются, затем пытается сделать какойто инсерт

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`corporate`.`permission_role`, CONSTRAINT `permission_role_role_id_foreign` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`)) (SQL: insert into `permission_role` (`permissions_id`, `role_id`) values (59, 59))

т.е. было:
идАдмин привилегия59
идМодер привилегия59
идСобака привилегия59

и пытается заинсертить
привилегия59 привилегия59

притом запись в удаляемой привилегии так и осталась в таблице permissions
ни до какого $res->delete(); дело не доходит..

#85 Re: Laravel 5.x » Минуя вьюху 419 (сессия потеряна) редирект на login ? » 19.10.2017 18:04:48

sam

спасибо!)

сделал вот так

    public function render($request, Exception $exception)
    {
        foreach ($request->server as $k => $val){
            if ($k == "REDIRECT_STATUS" && $val == 200){
                return redirect('/login');
            }
        }

        return parent::render($request, $exception);
    }

#86 Laravel 5.x » Минуя вьюху 419 (сессия потеряна) редирект на login ? » 19.10.2017 10:57:38

sam
Ответов: 2

Здравствуйте! у всех при потере сессии Laravel отображает шаблон 419.blade.php
Не могу найти, где написать редирект на страницу Login минуя этот 419..

#87 Re: Laravel 5.x » Хуки в приложении » 18.10.2017 17:48:00

sam

я еще ток вдупляю php и чето мне подсказывает, что тебе нужно именно это https://www.youtube.com/watch?v=YORueJt … R&index=55 тут чел создает сайт, в котором есть у него главный макет и вкрапления каких ему надо блоков.. в следующем 56 уроке он в конце создает функцию renderOutput в которой переназначает блоки для той или иной страницы и генерит результирующую страницу.. полистай видюхи, проследи че он делает.

#88 Re: Laravel 5.x » Почему нет аутентификации в Middleware » 06.10.2017 13:43:05

sam

Слушай, если я не ошибаюсь, после версии 5.2 ларавелевские сессии нельзя передавать в контроллеры и миделвары.. миделварь сам рулит сессией.. тебе нужно самому передать в него ид пользователя и в нем уже сравнивать может он или не может отправлять запрос.
public function handle($request, Closure $next, $adminId)

https://laravel.ru/forum/viewtopic.php?id=2907 тут в комментах я написал как туда передать пользователя

#89 Re: Laravel 5.x » Почему нет аутентификации в Middleware » 06.10.2017 09:26:38

sam

Попробуй вместо

Auth::check()

auth()->check() и auth()->user()->id везде

#91 Re: Laravel 5.x » Не могу передать Модель User в конструктор контроллера » 04.10.2017 17:31:44

sam

только все равно редирект срабатывает при "===" сравнении. меняю на "==" и все норм. даже если заменить на auth()->user()->id
Спасибо, исправил на ваш вариант.

#92 Re: Laravel 5.x » Не могу передать Модель User в конструктор контроллера » 04.10.2017 16:44:45

sam

мож кому будет полезно.. С помощью middleware проверяю на Админа:

командой создал мидлварь  php artisan make:middleware isAdmin
и в Kernel:
в $middlewareGroups Добавил

        'admin' => [
            'isAdmin:1', // 1 - это айдишник админа в users. так передаются параметры
        ],

в  protected $routeMiddleware = [ Добавил

'isAdmin' => \Corp\Http\Middleware\isAdmin::class,

ну и в самом классе isAdmin у меня:

<?php
namespace Corp\Http\Middleware;
use Closure;
class isAdmin
{
    public function handle($request, Closure $next, $admin_user_id)
    {
        if (auth()->check() && (auth()->user()->id == $admin_user_id)) { // если залогинен и админ
            return $next($request);
        } elseif (auth()->check() && (auth()->user()->id !== $admin_user_id)){ // если залогинен но не админ
            return redirect('/');
        }
        return redirect('/');
    }
}

#93 Re: Laravel 5.x » Бэкенд » 03.10.2017 18:24:28

sam

на вот тебе еще, вдохновляйся big_smile
https://goo.gl/cgUSck сотка уроков на русском языке. там версия 5.2, но до сих пор (5.5) актуально. различия все указаны в комментах под видео. сам лично проверял до 82 урока, в кратчайшие сроки big_smile
п.с. убежал за попкорном

#94 Re: Laravel 5.x » Не могу передать Модель User в конструктор контроллера » 03.10.2017 11:49:47

sam

да.. тоже это нашли.
https://laracasts.com/discuss/channels/ … onstructor
Thing is controller construct executes before any middleware, so there is no user yet
крутяк блин.. думал будет проще.
и спасибо что не оставили в стороне smile

#95 Laravel 5.x » Не могу передать Модель User в конструктор контроллера » 02.10.2017 18:03:58

sam
Ответов: 5

Laravel 5.5 винда7
я новичок.  все руты рабочие, логинюсь, регаюсь и т.д. с помощью (php artisan make:auth) за исключением вот этой группы:
проблема в следующем:
имеется рут '/admin'

Route::group(['prefix' => 'admin', 'middleware' => ['auth']], function () {
    Route::get('/', 'Admin\IndexController@index')->name('adminIndex');
    Route::resource('/articles', 'Admin\ArticlesController');
});

есть контроллер с конструктором.

use Illuminate\Support\Facades\Auth;
....
    public function __construct()
    {
//        $r = Auth::user();
//        dd($r);
        $this->user = Auth::user();
        if (!$this->user) {
            abort(403);
        }
    }

$this->user возвращает 403. если проверить через dd то в $r будет null.
в этом же контроллере, в любой другой функции если сделать проверку

$r = Auth::user();
dd($r);

модель пользователя отображается.
более того, если оставить проверку в __конструкторе, то (php artisan route:list) выдает ошибку [Symfony\Component\HttpKernel\Exception\HttpException]
и список рутов уже не формируется..

лично мои догадки, что middleware править надо. но че и как там править пока не понимаю..
пробовал менять auth на web результат такой же..
вот мой мидлварь

<?php

namespace Corp\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \Corp\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \Corp\Http\Middleware\TrustProxies::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \Corp\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \Corp\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \Corp\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];
}

я, собственно, хочу формировать меню для админа, и только он его должен видеть. но из за проблемы с моделью пользователя всё моё меню ругается что не один из рутов не существует..

    public function getMenu()
    {
        return LavMenu::make('adminMenu', function ($menu) {
            $r = Auth::user();
            dd($r);
            $menu->add('Статьи', array('route' => 'admin.articles.index'));
            $menu->add('Портфолио', array('route' => 'admin.articles.index'));
            $menu->add('Меню', array('route' => 'admin.articles.index'));
            $menu->add('Пользователи', array('route' => 'admin.articles.index'));
            $menu->add('Привилегии', array('route' => 'admin.articles.index'));
        });
    }

вот все мои сейчас руты

+--------+-----------+-------------------------------+----------------------+-------------------------------------------------------------------------+----------------------------------------------+
| Domain | Method    | URI                           | Name                 | Action                                                                  | Middleware                                   |
+--------+-----------+-------------------------------+----------------------+-------------------------------------------------------------------------+----------------------------------------------+
|        | GET|HEAD  | /                             | home                 | Corp\Http\Controllers\IndexController@index                             | web                                          |
|        | GET|HEAD  | _debugbar/assets/javascript   | debugbar.assets.js   | Barryvdh\Debugbar\Controllers\AssetController@js                        | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
|        | GET|HEAD  | _debugbar/assets/stylesheets  | debugbar.assets.css  | Barryvdh\Debugbar\Controllers\AssetController@css                       | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
|        | GET|HEAD  | _debugbar/clockwork/{id}      | debugbar.clockwork   | Barryvdh\Debugbar\Controllers\OpenHandlerController@clockwork           | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
|        | GET|HEAD  | _debugbar/open                | debugbar.openhandler | Barryvdh\Debugbar\Controllers\OpenHandlerController@handle              | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
|        | GET|HEAD  | admin                         | adminIndex           | Corp\Http\Controllers\Admin\IndexController@index                       | web,auth                                     |
|        | GET|HEAD  | admin/articles                | articles.index       | Corp\Http\Controllers\Admin\ArticlesController@index                    | web,auth                                     |
|        | POST      | admin/articles                | articles.store       | Corp\Http\Controllers\Admin\ArticlesController@store                    | web,auth                                     |
|        | GET|HEAD  | admin/articles/create         | articles.create      | Corp\Http\Controllers\Admin\ArticlesController@create                   | web,auth                                     |
|        | GET|HEAD  | admin/articles/{article}      | articles.show        | Corp\Http\Controllers\Admin\ArticlesController@show                     | web,auth                                     |
|        | PUT|PATCH | admin/articles/{article}      | articles.update      | Corp\Http\Controllers\Admin\ArticlesController@update                   | web,auth                                     |
|        | DELETE    | admin/articles/{article}      | articles.destroy     | Corp\Http\Controllers\Admin\ArticlesController@destroy                  | web,auth                                     |
|        | GET|HEAD  | admin/articles/{article}/edit | articles.edit        | Corp\Http\Controllers\Admin\ArticlesController@edit                     | web,auth                                     |
|        | GET|HEAD  | api/user                      |                      | Closure                                                                 | api,auth:api                                 |
|        | GET|HEAD  | articles                      | articles.show        | Corp\Http\Controllers\ArticleController@show                            | web                                          |
|        | GET|HEAD  | login                         | login                | Corp\Http\Controllers\Auth\LoginController@showLoginForm                | web,guest                                    |
|        | POST      | login                         |                      | Corp\Http\Controllers\Auth\LoginController@login                        | web,guest                                    |
|        | POST      | logout                        | logout               | Corp\Http\Controllers\Auth\LoginController@logout                       | web                                          |
|        | POST      | password/email                | password.email       | Corp\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail  | web,guest                                    |
|        | GET|HEAD  | password/reset                | password.request     | Corp\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest                                    |
|        | POST      | password/reset                |                      | Corp\Http\Controllers\Auth\ResetPasswordController@reset                | web,guest                                    |
|        | GET|HEAD  | password/reset/{token}        | password.reset       | Corp\Http\Controllers\Auth\ResetPasswordController@showResetForm        | web,guest                                    |
|        | GET|HEAD  | portfolios                    | portfolios.show      | Corp\Http\Controllers\PortfolioController@show                          | web                                          |
|        | GET|HEAD  | register                      | register             | Corp\Http\Controllers\Auth\RegisterController@showRegistrationForm      | web,guest                                    |
|        | POST      | register                      |                      | Corp\Http\Controllers\Auth\RegisterController@register                  | web,guest                                    |
|        | GET|HEAD  | test                          | test                 | Corp\Http\Controllers\TestController@test                               | web                                          |
+--------+-----------+-------------------------------+----------------------+-------------------------------------------------------------------------+----------------------------------------------+

может есть идеи куда хотяб копать? весь день промучился с этой проблемой..

#98 Re: Общий раздел » Пакеты для создания меню » 26.09.2017 11:32:24

sam

Пробую сделать меню по видео уроку https://youtu.be/hc7Ty3yDtrk?t=19m34s

у автора работает (версия 5.2), у меня ругается на строку (версия 5.5)

$mBuilder = Menu::make('MyNav', function($m) use ($menu) {

Пишет:

Type error: Argument 1 passed to Illuminate\Database\Eloquent\Builder::make() must be of the type array, string given, called in /home/vagrant/Code/corporate.loc/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 1417

а именно:
    public function make(array $attributes = [])
    {
        return $this->newModelInstance($attributes);
    }

что я мог сделать не так?
в документации тоже не массив передают, а колбек функцию
https://github.com/lavary/laravel-menu#installation
Here is a basic usage:

Menu::make('MyNavBar', function($menu){
  $menu->add('Home');
  $menu->add('About',    'about');
  $menu->add('services', 'services');
  $menu->add('Contact',  'contact');
});

----
и еще вопрос. можно ли из модели получить название таблицы?

#99 Re: Laravel 5.x » Не работает отправка писем » 25.08.2017 15:32:35

sam

лично я (нубас) делал все по видео уроку https://youtu.be/zu-ZniGhogw и все прекрасно работает.

.env

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=2cb975f571cd30
MAIL_PASSWORD=2e5cd5d03b5b30
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=test@yandex.ru
MAIL_FROM_NAME="test app"

mail.php

    'driver' => env('MAIL_DRIVER', 'smtp'),
   'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],

возможно еще какието гдето настройки нужны. сечас уже плохо помню, посмотри видео, там все просто даже для новичка

ну и вот функция отправки

// Send Email
    private function send_email($test, $msg)
    {
        $user = User::findOrFail(2); // Письмо отправляется пользователю ID 2
        if ($user) {
            $params = [
                'user' => $user,
                'test' => $test,
                'msg' => $msg,
            ];
            Mail::send('emails.user.email_send', $params, function ($m) use ($user) { // юзаю шаблон, передаю параметры, выполняю функцию
                $m->from('hello@app.com', 'Your Application');
                $m->to($user->email, $user->name)->subject('Тема сообщения:');
            });

            return json_encode(['success' => TRUE, 'data' => 'ok']);
        } else {
            return json_encode(['success' => FALSE, 'data' => 'false']);
        }
    }

так же рекомендую вам 100 видео уроков по ларавелю https://laravel.ru/forum/viewtopic.php?id=2799 smile

#100 Laravel 5.x » Видео уроки на русском языке! » 24.08.2017 14:18:08

sam
Ответов: 8

Доброго времени суток, уважаемые!
Спасение утопающих, дело рук самих утопающих..
Изучаю Laravel 5.5 , и складывается впечатление, что документация больше походит на "записки программиста", нежели "документацию".. примеров явно не хватает.
аля "если там почесать и тут подоткнуть, то у вас все получится. Удачи!" чего чесать, куда подтыкать.. в общем без скила тут черт ногу сломит.
Многие из нас через это прошли/проходят/будут проходить.. собственно поэтому мы тут и оказались)
Сегодня обнаружил прям радость для себя.. не могу с вами не поделиться smile
100 уроков по ларавелю. треть уроков - разбор документации!!! две трети 2 проекта.
Устройство аутентификации, Middleware и другое. на доступном языке без причмокиваний и прочих эротических звуков...
https://www.youtube.com/watch?v=nWo5vHk … o2ldxWWtJR Laravel 5.2 но те кто шарят, понимают что материал на 97% актуален по сей 5.5 день. проблемные видео с мелкими расхождениями версий я прокомментировал под видео 55.

Предлагаю все самое простое и доступное и главное Проверенное! выкладывать сюда smile

П.С. с английским у меня так себе, поэтому если кто поднимет такой же ресурс на англоязычном, то тоже будет здорово. лично я пару уроков выполнил по англоязычным роликам. например этого парня https://youtu.be/zu-ZniGhogw и данный ролик у меня до сих пор в действии. если у кого возникнут трудности - обращайтесь, подскажу. пока свежо в памяти big_smile
____
и сразу же дополню, для начинающих: простые и понятные примеры, по Middleware на англ. лично вчера повторил, всё просто и доступно.
https://youtu.be/5jJGyEaY0Is
https://youtu.be/OojEiKsVIj0

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