Forge0100:
>Call to undefined method Illuminate\\\\Database\\\\Eloquent\\\\Collection::present()
Правильно. У коллекции нету такого метода. Его нужно вызывать конкретно на модели.
Можно добавить в Controller метод present, который будет принимать коллекцию, проходится по ней и на каждой модели вызывать present()->toArray().
Или вообще написать свой хелпер except который будет принимать коллекцию, и фильтровать ее.
Forge0100:
>illuminate/support: ~5.0
Он поддерживает L5.
Там же есть пример как его использовать, что непонятно?
Просто делаем класс UserPresenter с методом toArray() и в нем пишем:
public function toArray()
{
return array_except($this->entity->toArray(), ['activated', 'activation_code']);
}
И потом вызываем его $user->present()->toArray().
Если нужно вообще без лишних телодвижений, то просто через переменную $hidden в модели скрыть нужные поля и всё.
4.2 уже отжил своё. И если проект долгоживущий, и планируется его дальнейшее развитие, то стоит потратить пару дней чтобы перевести его на 5.1, так как чем дальше, тем труднее будет его поддерживать.
Valeriy Donika: на Yii возможно и быстрее создать простенький блог, но когда дело пойдет дальше, то всё будет на много хуже :)
Русский форум по laravel мертв давно уже. Вопросы лучше задавать именно на laracasts/discuss, там просто нужно разобраться в дизайне.
Valeriy Donika: Так тем более, если разработка идет из разных мест, то удобнее использовать Homestead + пушить на сервер гитом. Таким образом везде будет одинаковое окружение и актуальные исходники. В случае же если что-то поломается, то всё можно будет быстро починить. Нужно сразу привыкать работать правильно.
В laravel нету формбилдера. Он не нужен просто. Возможно есть какие-то сторонние аналоги, но я такие не испольую. Проще самому набросать роут + контроллер + пару вьюх, чем разбираться с тем, что там нагенерил скафолдинг.
Valeriy Donika: не нужно смущаться. Он настраивается 1 раз, и работает без проблем. Работаешь локально, затем пушишь на сервер и получаешь работающий продукт.
Valeriy Donika: Ставишь локально laravel.com/docs/5.1/homestead и работаешь локально.
Если нужно залить на сервер, то пушишь и всё. Как настроить репозиторий на сервере я написал выше.
Valeriy Donika: не так. Проект лежить локально в гите. Туда же комитися. Когда нужно он просто пушится на сервер и там автоматически разворачивается. Работать напрямую на сервер - моветон.
Muhammad: валидировать, как я писал выше, должен FormRequest класс. Я дал ссылку как это правильно делать.
Таким образом в $request уже будут валидные данные, которые можно просто передавать в сервис регистрации.
public function postCreate(RegisterUserRequest $request)
{
$user = $this->userRegistration->register($request->all());
return __ возвращаем ответ __;
}
Для исключений есть отдельная папка app/Exceptions, но хранить их можно где угодно. Всё зависит от структуры проекта.
Я обычно переопределяю метод render в app/Exceptions/Handler.php и обрабатываю все ошибки так, как мне это нужно.
Таким образом у меня чистые контроллеры, без тысячи try/catch блоков.
Если речь про то, что папки vendor нету в git, то все верно, её там и не должно быть.
Когда проект пушится на сервер, нужно просто сделать composer install, чтобы скачать нужные зависимости.
Чтобы все работало как надо, файл composer.lock должен быть в гите, тогда на сервер поставятся именно те зависимости, которые у вас стоят локально.
If this command fails, you may have an old version of Vagrant that requires the full URL:
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
На 1 строчку дальше было сложно прочитать?