Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Подскажите пожалуйста как в Homestead настроить xdebug чтобы работала отладка с PhpStorm? В официальном гайде ни слова про это. Гуглил много, пробовал по разному, но ничего не работает...
Пытаюсь развернуть 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
Подскажите как это исправить?
Ага кажется я понял - методы видимо объявляются динамически... Но как вы с этим живете? Может есть какой-то плагин для IDE чтобы их подсвечивало?
Пытаюсь создать свое первое приложение на ларавеле. Проект с помощью композера установил, но заметил что очень много где пишет о неопределенных классах и методах. Ошибок в браузере не пишет, просто в IDE (phpstorm и vscode иногда) их подсвечивает как ошибку.
Например в routes/web.php не видит класс Route, да собственно там и нету use чтобы указать какой класс использовать... Пытался методом исключения подключать все классы Route которые нашла IDE, но ни у одного не было метода get который там используется.
Или вот еще: по офф докам создал первую миграцию (там где пример с Task) и там используется класс Schema (use Illuminate\Support\Facades\Schema прописано), но метод create у него тоже не находит.
Кроме того судя по вьюхе должны отображаться кнопки логина/регистрации, но их нету (только слово Laravel и ссылки под ним).
И еще я не могу дебажить вьюхи на blade. Просто не ставится точка останова (видимо потому что нет php тега). Это нормально?
Валидация в своем, допустим, ArticleRequest наследнике обычного Request, тогда в store(ArticleRequest $request) будет
Вы это серьезно? Для валидации модели нужен отдельный класс? Тьфу... У меня сейчас так резко уменьшилось желание переходить на этот фреймворк. Я конечно за SOLID, но реально ведь почти во всех фреймворках на всех языках валидация модели вешается на тот же класс (причем самое удобное делать это аннотациями как в Java или C#). Разве что иногда делается разделение на dao модель и модель для вьюх. Или вы это и имели ввиду?
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 (пример выше) если модель не прошла валидацию то в ней будут указаны ошибки и при рендере они выведутся. А как у вас тут это устроено?
Зачем это делать? Чтобы не писать$article->fill($request->input());?
Да. Меньше кода.
Но для начала покажите мне дефолтный способ - вот то что вы сейчас написали, но полностью. Т.е. откуда берутся переменные $article и $request? Можете привести примерный код метода создания статьи?
Новую статью создает метод store. Данные содержатся в переменой $request
Вообще не ответ. Я не это спрашивал.
Допустим у нас есть контроллер ArticleController и его метод create который соответственно будет создавать новую статью. Предположим у нас уже есть какая-то примитивная форма в которой будут заполняться поля этой статьи (кстати в каком они должны быть формате?). Как передать в этот метод данные формы? Сорьте за нубский вопрос, но я не смог найти этого в доках.
P.S. Предвидя что будет что-то вроде Request::get('Article') для получения массива полей переданных из формы спрошу - а нельзя ли задать вот так?
public function create(Article $article) {}
Так было бы удобнее... Чтобы фреймворк самостоятельно смаппил массив из запроса в модель.
Кстати по сути можно провести аналогию виджетов с компонентами в том же реакте например. Смысл то тот-же: один раз описываешь разметку и потом используешь ее многоразово с разными параметрами и коротким вызовом. И если на Yii еще любят катить бочку, то против реакта не попрешь - сожрут!
P.S. Почему я периодически автоматически разлогиниваюсь? Надоело уже...
Это мое мнение, вы можете согласится или нет.Тема виджетов мне неинтересна, чтобы дискутировать о ней.Я уверен многим они нравятся и реально помогают в работе.
Я просто пытаюсь понять как можно жить без виджетов... Даже если формы в принципе и можно делать руками (хотя с таким красивым выводом ошибок вряд-ли получится), то как быть со сложными гридами - большой вопрос.
Также, я не высказывался никаких претензий.
Да ладно?
Использовать виджеты для пользовательского-клиентского интерфейса - сомнительное дело.
Ну, такой подход давно считается мертвым. Годится для админок и прототипов, или для мелких сайтов
Понятно что сейчас вообще все на SPA стараются переходить и для бэкэнда это конечно намного удобнее (тупо json отдавать везде), но я не умею в JS кроме жиквери. Поэтому все на обычных html-формах и сабмитах.
Ну, такой подход давно считается мертвым. Годится для админок и прототипов, или для мелких сайтов, в общем, как дело касается коммерции - так виджеты перестают быть удобными.Сейчас фронтенд разработка это намного больше чем html/css.
Ну таки я сейчас и не пишу ничего крупного. Делаю мелкие сайтики, где большая часть кода приходится на профиль юзера (там же и админка). Много таблиц и форм - с чем успешно справляются виджеты. JS буквально несколько строк (в нескольких местах на jquery ajax запросы шлю). Фронтендщиков нет, все делаю один от начала и до конца (очень маленькая фирма).
Абсолютно не понял претензий к виджетам. Обоснуйте почему они
Годится для админок и прототипов, или для мелких сайтов
???
По поводу виджетов - есть речь о админке, то для Laravel существуют пакеты разной сложности под это дело.Использовать виджеты для пользовательского-клиентского интерфейса - сомнительное дело.
Чем же оно сомнительное? Я использую виджеты абсолютно везде. Очень удобно. Готовая бутстраповская разметка за просто так. В общем пока только виджеты удерживают меня от перехода.
Понимаю вопрос немного холиварный, но стоит ли переходить с Yii2 на Laravel? Я немного почитал доки ларавеля и мне очень все нравится в основном, но есть один просто ГИГАНТСКИЙ минус по сравнению с Yii - отсутствие виджетов. Я считаю виджеты - это самый огромный из всех плюсов Yii. Я плохо верстаю сам и мне очень нравится что стоит вставить виджет и готова разметка... Причем есть виджеты настолько сложные, что их не больно то сверстаешь сходу даже если умеешь (например вот этот грид). В общем они экономят уйму кода и времени. Насколько я понял в ларавеле нет ничего подобного и это очень грустно.
Страницы 1