Laravel по-русски

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

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

#1 Общий раздел » Homestead и xdebug » 09.06.2020 08:55:08

Dahotta
Ответов: 1

Подскажите пожалуйста как в Homestead настроить xdebug чтобы работала отладка с PhpStorm? В официальном гайде ни слова про это. Гуглил много, пробовал по разному, но ничего не работает...

#2 Веб-разработка » Ошибки при разворачивании Homestead » 07.06.2020 23:05:32

Dahotta
Ответов: 0

Пытаюсь развернуть vagrant box - Laravel Homestead, но получаю такую ошибку:

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["modifyvm", "b5044fd1-4b8c-486a-b494-87c3c4290fe5", "--natpf1", "tcp8000,tcp,,8000,,80", "--natpf1", "tcp44300,tcp,,44300,,443", "--natpf1", "tcp33060,tcp,,33060,,3306", "--natpf1", "tcp4040,tcp,,4040,,4040", "--natpf1", "tcp54320,tcp,,54320,,5432", "--natpf1", "tcp8025,tcp,,8025,,8025", "--natpf1", "tcp9600,tcp,,9600,,9600", "--natpf1", "tcp27017,tcp,,27017,,27017", "--natpf1", "ssh,tcp,127.0.0.1,2222,,22"]

Stderr: VBoxManage: error: A NAT rule of this name already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component NATEngineWrap, interface INATEngine, callee nsISupports
VBoxManage: error: Context: "AddRedirect(Bstr(strName).raw(), proto, Bstr(strHostIp).raw(), RTStrToUInt16(strHostPort), Bstr(strGuestIp).raw(), RTStrToUInt16(strGuestPort))" at line 1907 of file VBoxManageModifyVM.cpp

Подскажите как это исправить?

#3 Re: Laravel 5.x » Не определяются классы и методы » 17.05.2018 12:38:36

Ага кажется я понял - методы видимо объявляются динамически... Но как вы с этим живете? Может есть какой-то плагин для IDE чтобы их подсвечивало?

#4 Laravel 5.x » Не определяются классы и методы » 17.05.2018 12:33:33

Dahotta
Ответов: 2

Пытаюсь создать свое первое приложение на ларавеле. Проект с помощью композера установил, но заметил что очень много где пишет о неопределенных классах и методах. Ошибок в браузере не пишет, просто в IDE (phpstorm и vscode иногда) их подсвечивает как ошибку.

Например в routes/web.php не видит класс Route, да собственно там и нету use чтобы указать какой класс использовать... Пытался методом исключения подключать все классы Route которые нашла IDE, но ни у одного не было метода get который там используется.

Или вот еще: по офф докам создал первую миграцию (там где пример с Task) и там используется класс Schema (use Illuminate\Support\Facades\Schema прописано), но метод create у него тоже не находит.

Кроме того судя по вьюхе должны отображаться кнопки логина/регистрации, но их нету (только слово Laravel и ссылки под ним).

И еще я не могу дебажить вьюхи на blade. Просто не ставится точка останова (видимо потому что нет php тега). Это нормально?

#5 Re: Laravel 5.x » Как передать модель в action? » 16.05.2018 16:57:28

Валидация в своем, допустим, ArticleRequest наследнике обычного Request, тогда в store(ArticleRequest $request) будет

Вы это серьезно? Для валидации модели нужен отдельный класс? Тьфу... У меня сейчас так резко уменьшилось желание переходить на этот фреймворк. Я конечно за SOLID, но реально ведь почти во всех фреймворках на всех языках валидация модели вешается на тот же класс (причем самое удобное делать это аннотациями как в Java или C#). Разве что иногда делается разделение на dao модель и модель для вьюх. Или вы это и имели ввиду?

#6 Re: Laravel 5.x » Как передать модель в action? » 16.05.2018 16:23:22

public function store(Request $request, Article $article)
    {
$article->fill($request->input());

Серьезно? Т.е. это то что я и спрашивал? А что тогда в переменной $article изначально? Она пустая? Типа как $article = new Article()? Почему ее фреймворк тогда сам не заполняет перед вызовом?

Отредактировал выше. И правильно сказали create() - отображать должен форму, а store() сохранять данные. И введенные данные нужно проверять и корректировать, поэтому так не нужно делать, это усложнение.

Хмм, спорно, но возможно... Я просто сижу на Yii2, где такой метод обычно делается примерно так:

public function actionCreate() {
	$article = new Article();
	
	if ($article->load(Yii::$app->requst->post()) and $article->validate()) {
		$article->save();
		return $this->goHome();
	}
	
	return $this->render('create', ['model' => $article]);
}

Причем стыдно признаваться, но иногда я еще и мешаю create и update в один метод. Выглядит это все конечно паршиво.Вот поэтому и есть большое желание перейти на laravel. Но сначала хочу понять что тут к чему...

Кстати если у вас два метода: create - который как я понял нужен чтобы отрисовывать вьюху и store который уже принимает post запрос с данными, то где у вас будет валидация? Вон например в yii (пример выше) если модель не прошла валидацию то в ней будут указаны ошибки и при рендере они выведутся. А как у вас тут это устроено?

#7 Re: Laravel 5.x » Как передать модель в action? » 16.05.2018 16:05:22

Зачем это делать? Чтобы не писать$article->fill($request->input());?

Да. Меньше кода.

Но для начала покажите мне дефолтный способ - вот то что вы сейчас написали, но полностью. Т.е. откуда берутся переменные $article и $request? Можете привести примерный код метода создания статьи?

#8 Re: Laravel 5.x » Как передать модель в action? » 16.05.2018 13:33:27

Новую статью создает метод store. Данные содержатся в переменой $request

Вообще не ответ. Я не это спрашивал.

#9 Laravel 5.x » Как передать модель в action? » 16.05.2018 11:43:30

Dahotta
Ответов: 9

Допустим у нас есть контроллер ArticleController и его метод create который соответственно будет создавать новую статью. Предположим у нас уже есть какая-то примитивная форма в которой будут заполняться поля этой статьи (кстати в каком они должны быть формате?). Как передать в этот метод данные формы? Сорьте за нубский вопрос, но я не смог найти этого в доках.

P.S. Предвидя что будет что-то вроде Request::get('Article') для получения массива полей переданных из формы спрошу - а нельзя ли задать вот так?

public function create(Article $article) {}

Так было бы удобнее... Чтобы фреймворк самостоятельно смаппил массив из запроса в модель.

#10 Re: Laravel 5.x » Стоит ли переходить с Yii2? » 25.04.2018 16:04:22

Кстати по сути можно провести аналогию виджетов с компонентами в том же реакте например. Смысл то тот-же: один раз описываешь разметку и потом используешь ее многоразово с разными параметрами и коротким вызовом. И если на Yii еще любят катить бочку, то против реакта не попрешь - сожрут! big_smile

P.S. Почему я периодически автоматически разлогиниваюсь? sad Надоело уже...

#11 Re: Laravel 5.x » Стоит ли переходить с Yii2? » 25.04.2018 13:44:45

Это мое мнение, вы можете согласится или нет.Тема виджетов мне неинтересна, чтобы дискутировать о ней.Я уверен многим они нравятся и реально помогают в работе.

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

Также, я не высказывался никаких претензий.

Да ладно?

Использовать виджеты для пользовательского-клиентского интерфейса - сомнительное дело.

Ну, такой подход давно считается мертвым. Годится для админок и прототипов, или для мелких сайтов

#12 Re: Laravel 5.x » Стоит ли переходить с Yii2? » 25.04.2018 12:06:26

Понятно что сейчас вообще все на SPA стараются переходить и для бэкэнда это конечно намного удобнее (тупо json отдавать везде), но я не умею в JS кроме жиквери. Поэтому все на обычных html-формах и сабмитах.

#13 Re: Laravel 5.x » Стоит ли переходить с Yii2? » 25.04.2018 12:03:55

Ну, такой подход давно считается мертвым. Годится для админок и прототипов, или для мелких сайтов, в общем, как дело касается коммерции - так виджеты перестают быть удобными.Сейчас фронтенд разработка это намного больше чем html/css.

Ну таки я сейчас и не пишу ничего крупного. Делаю мелкие сайтики, где большая часть кода приходится на профиль юзера (там же и админка). Много таблиц и форм - с чем успешно справляются виджеты. JS буквально несколько строк (в нескольких местах на jquery ajax запросы шлю). Фронтендщиков нет, все делаю один от начала и до конца (очень маленькая фирма).

Абсолютно не понял претензий к виджетам. Обоснуйте почему они

Годится для админок и прототипов, или для мелких сайтов

???

#14 Re: Laravel 5.x » Стоит ли переходить с Yii2? » 25.04.2018 11:19:49

По поводу виджетов - есть речь о админке, то для Laravel существуют пакеты разной сложности под это дело.Использовать виджеты для пользовательского-клиентского интерфейса - сомнительное дело.

Чем же оно сомнительное? Я использую виджеты абсолютно везде. Очень удобно. Готовая бутстраповская разметка за просто так. В общем пока только виджеты удерживают меня от перехода.

#15 Laravel 5.x » Стоит ли переходить с Yii2? » 25.04.2018 10:17:46

Dahotta
Ответов: 12

Понимаю вопрос немного холиварный, но стоит ли переходить с Yii2 на Laravel? Я немного почитал доки ларавеля и мне очень все нравится в основном, но есть один просто ГИГАНТСКИЙ минус по сравнению с Yii - отсутствие виджетов. Я считаю виджеты - это самый огромный из всех плюсов Yii. Я плохо верстаю сам и мне очень нравится что стоит вставить виджет и готова разметка... Причем есть виджеты настолько сложные, что их не больно то сверстаешь сходу даже если умеешь (например вот этот грид). В общем они экономят уйму кода и времени. Насколько я понял в ларавеле нет ничего подобного и это очень грустно. sad

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