Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
потому что объект создаётся коллбэком, а не в момент регистрации. когда ты запрашиваешь этот объект из сервис-контейнера, выполняется коллбэк и вуаля
ок, немного изменил пример:
class SaveStrServiceProvider extends ServiceProvider
{
protected $defer = true;
public function boot()
{
//
}
public function register()
{
dd(1);
App::bind('App\Helpers\Contracts\SaveStr', function(){
return new SaveEloquent();
});
}
public function provides()
{
return ['App\Helpers\Contracts\SaveStr'];
}
}
В данном случае коллбэки нипричем, т.к. перенес dd(1) выше. Как написано по ссылке из документации: "вы можете отложить регистрацию до момента, когда одна из этих привязок будет запрошена из сервис-контейнера. " Я создал "отложенный" провайдер, указав свойство $defer и метод provides(). Все равно работа скрипта прерывается, хотя метод register() не должен срабатывать пока нет запроса к App\Helpers\Contracts\SaveStr. Выходит, что регистрация проходит в любом случае, почему?
Пытаюсь создать отложенный сервис-провайдер как в данной статье:
https://laravel.ru/docs/v5/providers#отложенные
код моего сервис-провайдера выглядит следующим образом:
class SaveStrServiceProvider extends ServiceProvider
{
protected $defer = true;
public function boot()
{
//
}
public function register()
{
App::bind('App\Helpers\Contracts\SaveStr', function(){
dd(1);
return new SaveEloquent();
});
}
public function provides()
{
return ['App\Helpers\Contracts\SaveStr'];
}
}
В данном коде я использовал
$defer = true;
и
public function provides()
для отложенного создания объекта своего класса SaveEloquent()
Так же в код анонимной функции поместил вызов dd(1) что должно прервать выполнение так же как и exit(1).
Так вот в чем вопрос - в данном случае, объект SaveEloquent() действительно не создается пока я в коде контроллера (например) не обращусь к своему классу (например через внедрение зависимости). Когда вызову методы класса, тогда выполнение прервется и отобразится "1".
Но! Если я не использую все эти примочки для создания отложенного провайдера $defer = true и public function provides() - результат такой же - объект не создается, пока к нему не будет обращения. Почему так?
Вопрос закрыт:
Redirect::back()->getTargetUrl();
P.S. Админ - сделай чтоб можно было удалять свои темы без ответов.
Нужно получить URL предыдущей страницы.
На php это $_SERVER['HTTP_REFERER'], в Laravel есть способ получить своими средствами?
Максимум удалось получить объект который содержит нужные данные:
Redirect::back()
но вытащить защищенное свойство не получается.
Разобрался, нужно было добавить правило "integer" перед диапазоном, иначе считает кол-во символов.
'age'=>'required|integer|between:5,50',
P.S. Почему-то удалить свое сообщение не получается.
Подскажите как создать простое правило валидации наподобии:
'age'=>'required|between:3,5',
Нужно разрешить ввод чисел в диапазоне от 5 до 50.