Laravel по-русски

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

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

#1 Re: Laravel 5.x » Очереди » 28.06.2017 10:09:28

Благодарю, я тоже к третьему варианту склонялся, но все-же надеялся на чудо smile

#2 Re: Laravel 5.x » Очереди » 28.06.2017 04:53:01

sync - сразу же выполнять задачи очереди, так?

Отправить почту на несколько адресов, создать лида в CRM занимает по времени где-то 3-5 секунд (AmoCRM почему-то долго отрабатывает). Заставлять пользователя ждать 5 секунд - не очень правильно.

#3 Laravel 5.x » Очереди » 27.06.2017 11:52:01

mavsan
Ответов: 8

Добрый день.

У кого-то есть опыт использования очередей на shared хостингах? Как решали контроль работы слушателя задач, например, если хостер прибьет задачу?

Единственно, что придумал гарантированно запускать задачи - cron + artisan schedule:run, в kernel смотреть - есть ли записи в jobs, если есть - запускать команду `queue:work --once` по количеству задач в таблице. Но это как мне кажется то еще решение...

В сети предлагают планировщиком запускать

$schedule->command('queue:work --daemon')->everyMinute()->withoutOverlapping();

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

#5 Re: Laravel 5.x » Миграция БД: Не могу ни создать, ни откатить » 26.06.2017 07:26:35

Вот, мне помогло в свое время установка сравнения как `utf_general_ci`, если тебе нужна именно `utf8mb4` в ссылке решение.

#6 Re: Laravel 5.x » Тесты, HTTP и сессии » 17.05.2017 14:04:14

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

$session = app('session.store');

#7 Laravel 5.x » Тесты, HTTP и сессии » 17.05.2017 13:28:54

mavsan
Ответов: 1

Модуль, который необходимо тестировать обрабатывает большой массив данных в xml. Работа ведется по типу обмена с 1C, т.е. какое-то время работает, потом прерывает работу, отсылает ответ, если не ok — внешний процесс опять тыкается по ури (передавая данные аутентификации, имя и ид сессии в хедере) и процесс возобновляется с прерванного места.

Собственно вопрос: что будет сохранено в сессии не известно, известны лишь ключи. Как в тесте заставить использовать сессию? В доке пишут, что можно передавать значения сессии в тест, но они не известны.

#8 Re: Laravel 5.x » Как обработать 3 формы обратной связи. » 17.05.2017 13:13:57

Если сильно хочется чтобы путь был именно ’/’ — вместо Route::post можно использовать еще Route::put и Route::delete (естественно метод надо в форе указать). Но мне кажется, это от лукавого.

#10 Re: Laravel 5.x » Как навесить маску на input? » 24.04.2017 12:36:00

Нет, не нужна дополнительная инициализация. phone тоже должно быть в кавычках:

{!! Form::number('phone', null, array('class' => 'form-control', 'id'=>'phone')) !!}

#11 Re: Laravel 5.x » Настройка файлового менеджера kcfinder в Laravel » 24.04.2017 10:17:32

Не работает что-то нифига, laravel 5.4. В самый первый раз отрабатывает. Потом валидацию не проходит. Он даже не пытается читать куки, открывать сессию, тупо создает новую (хотя не пишет её в storage) в последующие разы.

#12 Re: Laravel 5.x » Узнать загружена ли модель Eloquent. » 01.12.2016 03:28:03

Если следовать принципам (я думаю - их не зря не глупые люди придумывали) ООП, инкапсуляции в частности, это не правильно. ВСЕ свойства должны быть private/protected, а доступ к ним средствами методов. Конкретно свойство, которое сообщает внешнему миру о внутреннем состоянии модели - однозначно не должно быть публичным, а приватным (даже не защищенным, чтобы наследники не могли менять).

#13 Re: Laravel 5.x » Узнать загружена ли модель Eloquent. » 30.11.2016 04:39:28

С другой стороны - это exists - публичное, т.е. ни что не мешает кому-то сделать new Модель(), затем присвоить этой exists - true, блин дырища-то какая!

#14 Прочее » Багрепорт » 30.11.2016 03:56:33

mavsan
Ответов: 2

Я понимаю, что вы не являетесь разработчиками форума, но времени нет совсем искать их багтрекер, поэтому сюда пишу. Когда хотел плюсануть ответ меня перекинуло на страницу входа (если картинки нет):

вход

Хотя я залогинен и перед тем как плюсануть написал ответ. После нажатия "... и запомнить меня" - появилось вот это (если картинки нет):

ajax

В форум редиректа не было. Мелочь, а не приятно.

#16 Re: Laravel 5.x » Как разделить view auth для админки и сайта » 28.11.2016 09:16:47

Ну, или как варинат - смотри, с какого ури пришли в стандартный контроллер, если /admin/login (или как оно там у тебя) - метод showLoginForm отдаёт вьюху однмина, если что-то другое - фронтэнд. Но это плохо. Кони - в дом, люди - в стойло! На том стояло и стоит ООП.

#17 Re: Laravel 5.x » Как разделить view auth для админки и сайта » 28.11.2016 09:14:42

Кони-люди - всегда плохо. Для фронтэнда один контроллер, для бэкэнда свой. Роутов понадобится два (если канеш не хочешь чтобы там еще регились, сбрасывали пароли).

// форма входа
Route::get('/admin/login', 'AdminLogin@showLoginForm')->name('adminLoginForm');
// проверка правильности ввода
Route::post('/admin/login', 'AdminLogin@login')->name('adminLoginCheck');

Контролллер:

namespase Бла\Бла;

use ...
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class AdminLogin extends Controller {
    // в этом трейте вся магия
    use AuthenticatesUsers;

   protected $redirectTo = '/туда-пойдешь-что-то-не-найдешь';

   public function showLoginForm() {
       return view('вьюхаОдминаТупоКопипастишьИзСтандартнойСПоправкойНаСвоиНуждыИРоуты');
   }

  // если сильно надо можешь переопределить остальные методы трейта, логин, кол-во попыток (это уже другой трейт, его AuthenticatesUsers пользует), его  и прочее и прочее
}

Да, и в посреднике, который будет на эту форму (логин админа) всех слать рекомендую дописать:

public function handle($request, Closure $next)
{
	if(проверкаТвоихУсловий === false)
	{
		return redirect()->guest(route('adminLoginForm'));
	}
	
    return $next($request);
}

Это чтобы в методе sendLoginResponse(Request $request) наверняка работал редирект обратно на ту страницу, откуда чел попал на форму логина в админку.

Код не проверял, но должОн работать.

#18 Re: Laravel 5.x » sqlite » 26.11.2016 13:19:05

Ну, как бы тестовое окружение по-другому работает. В config/database.php настраивается подключение, затем в phpunit.xml указывается его название.

#19 Re: Laravel 5.x » sqlite » 26.11.2016 07:10:14

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

APP_ENV=local
APP_KEY=base64:pOFWM9/ZLdQPfF0hkZAlV0+6wTIPXxcSLWziAA4T1UU=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myLaravel
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_KEY=
PUSHER_SECRET=

#20 Laravel 5.x » sqlite » 25.11.2016 10:44:51

mavsan
Ответов: 5

При тестировании кода пользовался mysql, все ок, но довольно долго. Решил использовать sqlite :memory:, первый-же тест бд отвалился с ошибкой. Вот, что мне пишет phpunit:

SQLSTATE[HY000]: General error: 20 datatype mismatch (SQL: insert into "users" ("username", "name", "email", "password", "id", "updated_at", "created_at") values (admin, admin, admin@admin.com, $2y$10$pn7sMyUhibQ0ulMhcAdGouBLkFrJfZfTmMNuic9jDFgKus6KdKYEC, 814526de-292e-4190-a447-f18bd958c696, 2016-11-25 07:28:32, 2016-11-25 07:28:32))

Т.е. значения полей не обернуты в " или ', может кто-то подскажет.

И еще одна не очень приятная штука, у меня одна модель использует SoftDeletes, но при работе с sqlite поле deleted_at не создается, хотя в mysql все отлично.

#21 Re: Laravel 5.x » Как разделить view auth для админки и сайта » 25.11.2016 04:19:54

Про наследование и переопределение что-нить слышал? Хотя, если-бы слышал - не было-бы этого вопроса.
1. создать свои контроллеры
2. создать свои представления (views)
3. создать свои роуты
4. кушать печеньки

#22 Re: Laravel 5.x » The --path option does not exist » 23.11.2016 03:54:39

С созданием миграций проблем нет все ок. Я вообще искал информацию, дабы исключить возможные проблемы на будущее. Конкретно у меня все работает, но я думал, что можно так-же указывать путь при создании чего-то другого при помощи artisan, к примеру make:seeder , но параметр --path не отрабатывает у меня для этой команды, вот и искал возможную причину. Зачем мне сиды в другой папке? Ну в доке написано, что я могу делать структуру как мне велит шайтан.

Про фан - смешно, да.

#23 Re: Laravel 5.x » Узнать загружена ли модель Eloquent. » 23.11.2016 03:44:04

Это будет небольшая специфичная библиотека. Я не знаю, как и что будет делать человек, который будет пользоваться ею, как он будет выполнять инициализацию конкретной модели (ни кто не мешает сделать new модель и попытаться вызвать метод, который предоставит доступ к скрытой информации). Поэтому хотел исключить потенциально опасную ситуацию. Но спасибо за ответы.

#24 Laravel 5.x » Узнать загружена ли модель Eloquent. » 22.11.2016 07:43:59

mavsan
Ответов: 18

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

Вопрос вот в чем, если в коде вызвать

$exp = new MyModel()->where(...)...

то если is_null($exp) - запись не найдена.

А как быть, если надо узнать внутри модели - загружена ли она? Например, если модель создана при помощи

$exp = new MyModel();

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

Пока реализовал вот так:

if(!empty($this->original))

Но кажется мне, должна быть как-то по-другому эта проверка выполняться.

Честно - искал ответ, но не нашел sad Ткните носом smile

Благодарю.

#25 Re: Laravel 5.x » The --path option does not exist » 22.11.2016 03:31:52

Я дичайшим образом извиняюсь, но не могу найти этот соседний топик sad

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