Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Помогло
php artisan config:cache
Странно, но факт.
Сделал для себя приложение, которое работает на локальном компьютере, есть одна страница, с которой идет очень много ajax запросов на другую страницу, все работает, но иногда я получаю 500 ошибку, где то 1 раз в 50-100-200 запросов, в логах:
[2022-01-04 12:15:23] production.ERROR: No application encryption key has been specified. {"exception":"[object] (Illuminate\\Encryption\\MissingAppKeyException(code: 0): No application encryption key has been specified. at W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\EncryptionServiceProvider.php:79)
[stacktrace]
#0 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\helpers.php(263): Illuminate\\Encryption\\EncryptionServiceProvider->Illuminate\\Encryption\\{closure}()
#1 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\EncryptionServiceProvider.php(81): tap()
#2 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\EncryptionServiceProvider.php(60): Illuminate\\Encryption\\EncryptionServiceProvider->key()
#3 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\EncryptionServiceProvider.php(32): Illuminate\\Encryption\\EncryptionServiceProvider->parseKey()
#4 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(829): Illuminate\\Encryption\\EncryptionServiceProvider->Illuminate\\Encryption\\{closure}()
#5 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(714): Illuminate\\Container\\Container->build()
#6 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Application.php(841): Illuminate\\Container\\Container->resolve()
#7 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(652): Illuminate\\Foundation\\Application->resolve()
#8 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Application.php(826): Illuminate\\Container\\Container->make()
#9 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(987): Illuminate\\Foundation\\Application->make()
#10 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(907): Illuminate\\Container\\Container->resolveClass()
#11 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(868): Illuminate\\Container\\Container->resolveDependencies()
#12 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(714): Illuminate\\Container\\Container->build()
#13 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Application.php(841): Illuminate\\Container\\Container->resolve()
#14 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(652): Illuminate\\Foundation\\Application->resolve()
#15 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Application.php(826): Illuminate\\Container\\Container->make()
#16 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(156): Illuminate\\Foundation\\Application->make()
#17 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#18 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(697): Illuminate\\Pipeline\\Pipeline->then()
#19 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack()
#20 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(636): Illuminate\\Routing\\Router->runRoute()
#21 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute()
#22 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(166): Illuminate\\Routing\\Router->dispatch()
#23 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#24 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#25 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#26 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#27 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#28 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#29 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#30 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#32 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#34 W:\\domains\\site.local\\vendor\\fruitcake\\laravel-cors\\src\\HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle()
#36 W:\\domains\\site.local\\vendor\\fideloper\\proxy\\src\\TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(167): Fideloper\\Proxy\\TrustProxies->handle()
#38 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#39 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(141): Illuminate\\Pipeline\\Pipeline->then()
#40 W:\\domains\\site.local\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(110): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#41 W:\\domains\\site.local\\public\\index.php(52): Illuminate\\Foundation\\Http\\Kernel->handle()
#42 {main}
"}
в гугле находит информацию где всегда выдает эту ошибку, а у меня только иногда, а так все стабильно работает, как надо.
Что это может быть? как это исправить?
думаю будет важной информацией: в laravel я не силен, делал методом тыка, работает и сойдет, по этому всякие конфиги либо не настраивал либо минимально настраивал.
в файле config\app.php
'key' => env('APP_KEY'),
в .env (ключ немного изменен, но он есть)
APP_KEY=base64:BIfnCyZe9uzGkCQ64kME9rZ+dBYWRZJ27I9uMrNb8b0=
Мне кажется тут проблема не в ORM а в том, что у автора нет понимания MVC, по этому надо сначала подучить MVC, еще в него вникнуть.
Во, отличный ответ на вопрос
по каким принципам вообще существует этот валидатор
Большое спасибо covobo, теперь понятно что к чему.
И Вам constb тоже спасибо, все же в этой ссылке https://laravel.com/docs/5.4/validation#rule-unique есть что то новое и полезное.
Что я понял не так? можно использовать $this->validate, можно создавать валидатор в ручную - https://laravel.ru/docs/v5/validation#% … 0%BE%D0%B2, я решил создать вручную, потом решил ему добавить ошибку вручную, оно в коде не добавляет, а в другом коде добавляется, при каких обстоятельствах я описал.
Касаемо unique я в курсе, но я просил не вдаваться в это, раз делаю без этой проверки, значит оно так надо. Я не хочу приводить примеры почему так, потому что Вы будите обсуждать их (эти примеры), а не сам вопрос.
Где в 3-х строчках кода я наколхозил?
$validator = \Validator::make(['some key' => 'some value'], [], []);
$validator->errors()->add('error key', 'some error');
dd( [$validator->fails(), $validator->errors()->all()] );
По моей логике fails() должно возвращать TRUE, а errors()->all() должно возвращать массив [ 'error key' => ['some error'] ], но все на оборот, возвращает FALSE (ошибок нет), и пустой массив с ошибками, почему так?
причем, по не понятным причинам в каких то других местах этот чудо валидатор работает, т.е. я сначала проверяю допустим электронный адрес, на то что бы он был задан, что бы длина подходила, что бы был электронным адресом, а потом ОТДЕЛЬНО проверяю по БД не занят ли этот адрес, и если занять то через IF
$validator->errors()->add('user_email', 'электронный адрес уже занят');
оно уже срабатывает.
Я знаю о существовании такой штуки как:
$validator->after(function($validator) {
$validator->errors()->add('error key', 'some error');
});
но почему не работает просто errors add, а в других местах работает, по каким принципам вообще существует этот валидатор.
PS просьба не задаваться вопросом почему я изначально при валидации не задавал правил и сообщений об ошибке, не об этом вопрос.
Так же просьба не задаваться вопросом зачем я отдельно проверяю данные по БД и через IF добавляю ошибку, если можно в валидаторе задать эту проверку, раз делаю значит надо именно так.
Во-первых вставляя просто HTML Разметку, данный вставщик будет минимум кода и он может быть универсальным для многих страниц, т.е. без изменения кода вообще, а там где
div id="error"
надо прописывать эти id
+ мы можем возвращать не ошибки, а на оборот сообщение об успехе, типа регистрация прошла успешно.
Во вторых
$html = view('name', $data)->render(); // Тут теряем время
и много времени теряем?
У каждого свой подход, мне ближе минимизация работы с JS (не отказ и не в ущерб приложению) и больше работы с РНР, по мне он куда надежнее и предсказуем чем JS.
Proger_XP? так можно это как то сделать? потому что мне на ум приходят какие то совсем костыли, что аж страшно представить.
что то типа в файле реализации подключать еще 1 фал как раз с этой формой, т.е. получается какая то такая хрень:
Реализация шаблона:
@extends('layouts.app')
@section('title', 'Page Title')
@section('sidebar')
@parent
<p>Это дополнение к основной боковой панели.</p>
@endsection
@section('content')
@include('form')
@endsection
А уже в файле form держать эту форму без всяких extends, а в случае необходимости получить форму я просто делаю рендер файла form.
Но это ппц какой то.
Sergant210, печально, отрисовать не составляет труда, вставить тоже, минимум труда (кода в JS), а по вашему варианту гемороиться с кривым JS.
Есть шаблон допустим:
<!-- Хранится в resources/views/layouts/app.blade.php -->
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
@section('sidebar')
Это главная боковая панель.
@show
<div class="container" id="area">
@yield('content')
</div>
</body>
</html>
И есть реализация в с формой допустим:
@extends('layouts.app')
@section('title', 'Page Title')
@section('sidebar')
@parent
<p>Это дополнение к основной боковой панели.</p>
@endsection
@section('content')
<form method="POST">...</form>
<div>тут вывожу ошибки если они есть..</div>
@endsection
Если я допустим хочу реализовать это через AJAX, загружается страница, я ввожу данные, через AJAX они отправляются на сервер и если там есть ошибки то я на стороне сервера отрисовываю только то что содержится в файле layouts.app.blade.php, а точнее только то что содержится в секции content, и отправить обратно, а там уже JS заменит содержимое div с id = area на то что пришло, как такое реализовать? как отрисовать только секцию content?
Подскажите, допустим я прописываю правило,
'required|min:10|max:100'
и допустим еще что то, допустим значение не было задано, можно как то сделать что бы проверка на этом остановилась, что бы не проверялось и не заносилось в список ошибок что недопустимая минимальна длина и т.д.
ну насчет вызываемого метода, это так, для общего развития.
а насчет вернуть view, я хотел сделать так, что бы посредник проверял была ли нажата кнопка отправки формы, если нет то просто подключить вид и все, а если была, то $next...
тут были темы с примерами (я писал) конструкций.
начинай листать форум.
пролистал твои сообщения до 15 страницы, не нашел, может можно написать? а то мало ли, может не было такого ответа у меня такое иногда бывает, точно уверен что было, а на самом деле не было
2 вопроса.
первое, по умолчанию вызывается метод handle, можно как то сделать что бы вызываться какой то другой метод (ну смысле название метода который я передам, может я хочу один посредник использовать для нескольких проверок..)?
второе, что может возвращать посредник? по мимо
return $next($request);
в документации возвращает еще redirect, а вот если мне допустим надо вернуть вид (view)? такое возможно? я пробовал
return view($view);
но получаю ошибку (там что то с куками, но не в этом суть).
Здравствуйте, подскажите такую вещь, у меня шаблон располагается в:
view/layouts/template.blade.php
а файл в котором подключается этот шаблон расположен в:
view/service/login.blade.php
что мне надо прописывать в @extends?
Tantacula большое спасибо за информацию, у меня очень специфическое приложение, там не надо будет делать выборки и надо будет получать данные файла целиком, по этому вроде как просто файлы .php подходят идеально, единственно что я не учитываю, это возможно проверка файла при загрузке на синтаксические ошибки может выйти боком, ведь БД то ни чего не проверяет, там все ок.
Здравствуйте!
Подскажите такую вещь мне надо хранить некие данные но не в БД, а в файлах в самом приложении, что за файлы будут я пока не знаю (в смысле в каком формате) скорее всего php (в виде массива при помощи var_export) или txt или xml (хотя xml точно не будет, для формы про них упомянул).
Подскажите возможно ли это сделать с помощью Laravel, для примера мне нужно сделать что то типа сайта визитки где данные будут хранится в не в БД, а в файлах.
Где хранить такие файлы, какими классами пользоваться и вообще..
PS просьба только не уговаривать воспользоваться БД, у меня такое приложение где надо будет считывать все данные в файле, выборку не надо будет делать и надо что бы все работало как можно быстрее, вроде как это будет быстрее непосредственно через файл, чем через БД. Да и мне в этом конкретном случае будет удобнее работать с файлами.
Мне очень понравилась устройство БД у Wordpress, все просто и при этом в этой БД можно реализовать почти все, что захочешь, не создавая новых таблиц.
Большая просьба, сделайте уроки по Laravel 5 для начинающих, для тех, кто ни когда не работал с фреймворками, т.к. те уроки что встречал, рассчитаны для людей которые знакомы с фреймворками, причем с достаточно сложными, такими как Yii, допустим в них не объясняется что такое миграции и еще много всего.
Кто-то может сказать что Laravel достаточно сложный фреймворк и надо начать изучение фреймворков с чего-то более просто, сейчас к сожалению сложилась такая ситуация что из простых фреймворков (у которых есть РУ сообщество и РУ документация), которые понятны есть только CodeIgniter, но он мертв, на форуме (РУ) ни кто не отвечает, а без возможности задавать вопросы это бессмысленно.
А перевод уроков Laracasts на русский тут https://laravel.ru/tags/Laracasts пока не полный.
composer update
это я пробовал еще тогда, не помогло, да и на сколько я понимаю данная команда обновляет проект, а не composer
composer self-update
Выполнил эту команду и все получилось, файлы закачались полностью, все, всё работает.
PS я просто не думал что из-за устаревшего composer не будет закачиваться файлы, я думал если он устаревший, значит ни чего качать не должен, а тут что то качает, значит все нормально, т.е. я даже не рассматривал такой вариант, что composer устаревший.
Всем спасибо за участие и помощь.
- использую OpenServer, последнею версию
- раньше ни когда не пользовался Composer
- раньше ни когда не использовал фреймворки, решил с чего то начать, хотел с CodeIgniter (т.к. он прост и понятен), но он вроде как мертвый, я даже на форуме не смог зарегистрироваться, письмо с кодом не приходит, решил остановиться на Laravel
Собственно что я делал, в консоли перехожу в интересующую меня папку, и ввожу в консоли:
composer create-project laravel/laravel --prefer-dist
загружаются файлы, после я перехожу в папку public, открываю в браузере index.php и получаю ошибку, что не удается подключить autoload.php из папки vendor, я начинаю искать эту папку и тут выясняется что данная папка (vendor) отсутствует, я попытался найти как решить эту ошибку в гугле, но ни чего подобного нет, нашел видео с установкой laravel, там таких ошибок не было (хотя там скорее всего 4-ю версию устанавливали), подскажите как быть, что делать, кто виноват меня не особо интересует
Вот лог установки:
Вот файлы которые я получаю:
Собственно возможно ли реализовать многосайтовость (многодоменность / мультисайтовость / мультисайтинг / многосайтовость), технические требования примерно такие:
- на одной копии файлов (т.е. что бы под каждый сайт не копировать все файлы)
- для каждого сайта отдельная таблица (таблицы) в БД
- использование разных доменных имен и поддоменов (site1.ru sute2.ru forum.site2.ru и т.д.)
PS то, что надо настраивать apache я в курсе, скажем так полный доступ к настройкам apache есть.
И если да (а скорее всего да), на сколько это затруднительно? все просто или это будут костыли?
Подскажите, ни кто не в курсе, скоро появится русскоязычная документация на 5-ю версию?
Вот решил выучить данный фреймворк и тут попал на такой стык версий, почитал статью на habrahabr и как вычитал, много изменений по сравнению с 4-й версией, по-этому желательно 5-ю учить сразу, а с английским у меня туговато.