Laravel framework
1.
Влад (14.06.2014 / 12:22)
Кто использует?
2.
orel (14.06.2014 / 12:45)
ЯЯЯЯЯЯЯЯ )))
3.
Влад (14.06.2014 / 12:47)
2.
Орёл, какую версию?
4.
orel (14.06.2014 / 12:51)
Версия 4.1
Добавлено через 00:45 сек.
Но уже 4.2 есть, там некие изменения, и php>=5.4. Скоро буду юзать
5.
mozzzg (14.06.2014 / 16:36)
Лучше yii?
6.
максим (14.06.2014 / 17:58)
а пример можно посматреть Laravel framework
7.
юЮЮфюв (14.06.2014 / 17:59)
6.
nettkom, Гугл? Яндекс? Яху? Бинг? ...
8.
максим (14.06.2014 / 19:10)
7.
TakteS, ты думаешь они на этой платформе сидят
9.
юЮЮфюв (14.06.2014 / 19:13)
8, Нет. Но они явно знают примеры.
10.
Влад (14.06.2014 / 21:05)
8.
nettkom,
Сайты на laravel
http://vk.com/topic-53758340_28099734
Исходники
http://vk.com/topic-53758340_28222884
Урок
http://vk.com/topic-53758340_29956945
11.
JustZero (14.06.2014 / 23:42)
8.
nettkom, ну гугл вообще то python использует, если не ошибаюсь. а примеров laravel в интернете полно!
12.
Влад (15.06.2014 / 00:13)
Решил поставить Homestead, не получилось(
13.
максим (15.06.2014 / 00:56)
11.
alexandr.sytnyk,прокольно python некогда не пытался запустить как цмс скипт забавная идея у янки
14.
Вантуз-мен (17.01.2015 / 13:51)
Имеется вопром по laravel
к примеру если я создаю метод со связью 1 к 1 и этой связи не существует
<?php
public function user()
{
return $this->hasOne('User', 'id', 'user_id');
}
напрямую я не могу использовать так как $this->user() может быть null
есть ли способ проверки
чтобы не создавать 2 метода
<?php
public function userRelation()
{
return $this->hasOne('User', 'id', 'user_id');
}
public function user()
{
return $this->userRelation ?: new User;
}
15.
Вантуз-мен (20.02.2015 / 18:01)
Есть какое-нибудь дополнение для подсветки полей с ошибками в форме, кто знает?
16.
Reflesh (20.02.2015 / 18:40)
Vantuz (20 Февраля 2015 / 18:01)
Есть какое-нибудь дополнение для подсветки полей с ошибками в форме, кто знает?
Где? В редакторе?
Добавлено через 01:59 сек.
14.
Vantuz,
Можно же просто
$model = Model::find(1);
if (!is_null($model->user)) {
echo $model->user->login;
}
Добавлено через 07:01 сек.
15.
Vantuz, если имеешь ввиду пакет под лару, то в версии 4.*, стандартный пакет HTML в нем юзают макросы для ошибок. В 5 версии убрали из коробки, но думаю кто-нибудь уже сделал такой пакет под пятерку.
17.
Вантуз-мен (20.02.2015 / 20:19)
16.
Reflesh, встроенные макросы я что-то не нашел, может ткнешь носом
нашел такие
https://gist.github.com/mnshankar/7253657 , но там не очень удобно если в форме кол. полей динамически меняется
и поля имеют вид типа offer[number][0] offer[number][1] итд
Добавлено через 02:41 сек.
Насчет связей разобрались, так как ты предлагаешь не очень удобно если проект очень большой и везде писать эти проверки просто устанешь
решили использовать foreign_key и писать как рекомендуют без проверок
18.
Reflesh (20.02.2015 / 20:24)
17.
Vantuz, Версия то какая?
http://laravel.com/docs/4.2/html#custom-macros
http://laravel-recipes.com/recipes/181/creating-html-macros
19.
Вантуз-мен (20.02.2015 / 20:24)
точнее вот эти макросы нашел
http://laravelsnippets.com/snippets/bootstrap-3-form-macros
Добавлено через 00:58 сек.
пока 4.2 но перейду на 5 как только cartalist sentry перепишут
про макросы я знаю, я про то что может какой-то пакет стабильный есть
20.
Reflesh (20.02.2015 / 20:34)
19.
Vantuz, Я бы писал html) Я не встречал еще идеальных пакетов для bootstrap. Вот в пятерке сломана обратная совместимость, так же как и при выходе 4 версии.
21.
php (15.01.2020 / 03:46)
Знает ли кто-нибудь почему выдает такую ошибку?
D:\OSPanel\domains\host>php artisan migrate:fresh --seed
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.02 seconds)
Migrating: 2020_01_12_184642_create_posts_table
Migrated: 2020_01_12_184642_create_posts_table (0.02 seconds)
Symfony\Component\Debug\Exception\FatalThrowableError : Class 'App\User' not found
at D:\OSPanel\domains\host\vendor\laravel\framework\src\Illuminate\Database\Eloquent\FactoryBuilder.php:228
224| if ($this->amount < 1) {
225| return (new $this->class)->newCollection();
226| }
227|
> 228| $instances = (new $this->class)->newCollection(array_map(function () use ($attributes) {
229| return $this->makeInstance($attributes);
230| }, range(1, $this->amount)));
231|
232| $this->callAfterMaking($instances);
Exception trace:
1 Illuminate\Database\Eloquent\FactoryBuilder::make([])
D:\OSPanel\domains\host\vendor\laravel\framework\src\Illuminate\Database\Eloquent\FactoryBuilder.php:178
2 Illuminate\Database\Eloquent\FactoryBuilder::create()
D:\OSPanel\domains\host\database\seeds\DatabaseSeeder.php:14
Беда в том, что класс User на месте
22.
Вантуз-мен (15.01.2020 / 11:32)
Миграцию покажи и класс User
23.
php (15.01.2020 / 17:43)
Вантуз-мен, User.php
<?php
namespace host;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
Добавлено через 00:43 сек.
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('post_id');
$table->bigInteger('author_id')->unsigned();
$table->string('title');
$table->string('descr');
$table->text('text');
$table->timestamps();
$table->foreign('author_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
24.
Вантуз-мен (15.01.2020 / 17:48)
namespace host; -> Class 'App\User' not found
25.
php (15.01.2020 / 17:54)
Вантуз-мен, я что-то не догоню никак) код миграции в пространство имен user добавить нужно?
Добавлено через 00:35 сек.
Только какой смысл дважды одно и то же писать
26.
Вантуз-мен (15.01.2020 / 18:00)
По тому коду который ты скинул не видно вызов класса User, судя по всему он не в миграции а в сидах которые выполняются после миграций с ключом --seed
По ошибке понятно что вызывается класс User который в пространстве имен App
у тебя User в host
из этого следует, что App\User !== host\User
замени namespace host; на namespace App; у тебя скорее всего по ошибке вставилось
27.
php (15.01.2020 / 18:06)
D:\OSPanel\domains\host>php artisan migrate:fresh --seed
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.02 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.01 seconds)
Migrating: 2020_01_12_184642_create_posts_table
Migrated: 2020_01_12_184642_create_posts_table (0.03 seconds)
Symfony\Component\Debug\Exception\FatalThrowableError : Class 'App\User' not found
at D:\OSPanel\domains\host\vendor\laravel\framework\src\Illuminate\Database\Eloquent\FactoryBuilder.php:228
224| if ($this->amount < 1) {
225| return (new $this->class)->newCollection();
226| }
227|
> 228| $instances = (new $this->class)->newCollection(array_map(function () use ($attributes) {
229| return $this->makeInstance($attributes);
230| }, range(1, $this->amount)));
231|
232| $this->callAfterMaking($instances);
Exception trace:
1 Illuminate\Database\Eloquent\FactoryBuilder::make([])
D:\OSPanel\domains\host\vendor\laravel\framework\src\Illuminate\Database\Eloquent\FactoryBuilder.php:178
2 Illuminate\Database\Eloquent\FactoryBuilder::create()
D:\OSPanel\domains\host\database\seeds\DatabaseSeeder.php:14
Please use the argument -v to see more details.
Мне кажется до этого правильное пространство имен было
Добавлено через 02:41 сек.
Легче вручную заполнить
Добавлено через 06:04 сек.
ладно, пошвыряюсь. Все равно полезно узнать как там "под капотом" все устроено
28.
Дмитрий (16.01.2020 / 07:04)
php, Вантус прав. Приведи у себя весь код к единому пространству имен.
29.
php (16.01.2020 / 08:31)
Дмитрий, возможно. Незнаю как, но проблему решил переустановкой двига. Потом свой код обратно скопироаал и все заработало.
30.
php (21.01.2020 / 13:17)
Дошло дело до "мускула" и я полез смотреть официальную документацию (официальную, Карл!) и воспользовался предложенным там методом table(), в моем случае это выглядит так:
$posts = post::table('posts') -> get();
return view('index', compact('posts'));
В итоге:
Bad Method Call
Did you mean App\post::getTable() ?
Решил попробовать и getTable(), но и тут ошибка: "короче, не статический метод".
Не знаете ли, почему двиг снова уперся рогом и выдал ошибку выше?
31.
Вантуз-мен (21.01.2020 / 15:13)
Нельзя так делать или ты используешь QueryBuilder и делаешь так
DB::table('posts')->get();
или через ORM с использованием модели
Post::query()->get(); ну или просто Post::get();
32.
php (22.01.2020 / 13:10)
Точняк! А оказывается документация на русском не является официальной ларавэл. На их сайте все по-другому.
33.
php (01.02.2020 / 16:34)
Джентльмены, уделите несколько минут времени на то, чтобы растолковать мне ошибку: InvalidArgumentException
Order direction must be "asc" or "desc".
Короче, решил замутить поиск по БД и создал соответствующую форму, после одного запроса двиг выдает ошибку описанную выше. Сайт завис на этой ошибке, даже если удалить форму, соответствующий роут и контроллер 😂
34.
Вантуз-мен (01.02.2020 / 17:10)
Сам запрос напиши сюда
35.
php (01.02.2020 / 17:46)
public function index(Request $request)
{
if ($request->search) {
$posts = post::join('users', 'author_id', '=', 'users.id') -> where('title', 'like', '%' . $request->search . '%') -> orWhere('descr', 'like', '%' . $request->search.'%')
-> orWhere('name', 'like', '%' . $request->search.'%') -> orderBy('posts.created_at', 'descr')->get();
return view('index', compact('posts'));
}
$posts = post::join('users', 'author_id', '=', 'users.id')->orderBy('posts.created_at', 'descr')->paginate(4);
return view('index', compact('posts'));
}
36.
Максим (01.02.2020 / 19:57)
А тебя не смущает
descr?
37.
php (01.02.2020 / 20:19)
А что?
38.
Максим (01.02.2020 / 21:01)
А что?
desc должно быть
39.
php (01.02.2020 / 21:55)
Максим, ну, а если мне нужно чтобы именно descr был, потому что именно с таким именем у меня таблица в БД, что делать?
40.
php (01.02.2020 / 22:34)
asc и desc это вообще направление сортировки) причем тут таблица descr!
41.
php (01.02.2020 / 22:48)
Сам себя запутал, конечно desc в запросе, спс)
Вот так оно бывает, если по пол дня рыться в коде, начинает все "сливаться" и мозг ни*** понимать уже не хочет.
42.
php (03.02.2020 / 13:28)
Укажите на недочет пожалуйста. Посты не создаются, в чем дело никак не разберусь, вроде роут, контроллер все в порядке, никаких ошибок нет! Просто при нажатии на кнопку "создать пост" ничего не происходит. Гляньте не замыленным взглядом.
Файл web.php:
Route::get('/', 'postctr@index');
Route::get('index', 'postctr@index')->name('index');
Route::get('create', 'postctr@create')->name('create');
Route::post('/', 'postctr@store')->name('store');
файл create... .php:
<form action="{{route('store')}}" method="post" enctype="multipart/form-data">
@csrf
<h3>Создать пост</h3>
<div class="form-group">
<input type="text" class="form-control" name="title">
</div>
<div class="form-group">
<textarea name="descr" rows="3" class="form-control"></textarea>
</div>
<div class="form-group">
<input type="file">
</div>
<input type="submit" value="Создать пост" class="btn-outline-success">
</form>
метод store в контроллере:
public function store(Request $request)
{
$post = new post();
$post->title = $request->title;
$post->short_title = Str::length($request->title) > 30 ? Str::substr($request->title, 0, 30) . '...' : $request->title;
$post->descr = $request->descr;
$post->author_id = rand(1,10);
if ($request->file('img')) {
$path = Storage::putFile('public', $request->file('img'));
$url = Storage::url($path);
$post->img = $url;
}
$post->save();
return redirect()->route('index');
}
вьюха ни в какие папки не вложена
43.
Дмитрий (08.02.2020 / 19:07)
php, 1) Во-первых, убедись, что роут создан верно.
Route::post('/', 'postctr@store')->name('store');
У тебя роут
store ведет на главную страницу сайта. Подозреваю, что у тебя неверно прописано имя контроллера? Перед
@ должно быть указано название файла контроллера от корня папки
Controllers без расширения
php. Например, myTestController@store (после собаки - метод в этом контроллере).
В методе store() неверно создается модель. Делай лучше так:
$post = Post::create([
'title' => $request->title,
'short_title ' => Str::limit($request->title, 30, '..'),
'descr' => $request->descr,
'author_id' => mt_rand(1,10)
]);
if ($request->file('img')) {
$path = Storage::putFile('public', $request->file('img'));
$url = Storage::url($path);
$post->img = $url;
}
$post->save();
либо так:
$data = [
'title' => $request->title,
'short_title ' => Str::limit($request->title, 30, '..'),
'descr' => $request->descr,
'author_id' => mt_rand(1,10),
'img' => false
];
if ($request->file('img')) {
$path = Storage::putFile('public', $request->file('img'));
$data['img'] = Storage::url($path);
}
$post_id = Post::insertGetId($data);
Обрати внимание, что твой велосипед можно заменить встроенным методом Laravel:
// вместо этой приблуды
$post->short_title = Str::length($request->title) > 30 ? Str::substr($request->title, 0, 30) . '...' : $request->title;
// используй метод limit
Str::limit($request->title, 30, '..');
44.
php (08.02.2020 / 23:41)
Дмитрий, если бы был неверно указано имя контроллера, роута, то я б увидел ошибку, но ее нет.
Я думаю здесь нужно отлаживать через режим разработчика в браузере. Ну код наверное верен, использовал подобное неоднократно в разных вариациях. Просто на нажатие кнопки отправки формы нет никакой реакции.
А вот за метод limit спс, про него ничего не знал, поэтому я по классике решал вопрос.
45.
php (12.10.2020 / 13:38)
Обновил локальный сервер (може и не в этом дело), в laravel Request стал приходить пустой, что ни делай. У кого-нибудь бывало такое? уже сутки не могу понять в чем дело(( если в адресную строку get-запрос забить-норм, а через $request->input('name') и т.п. - ***, не могу получить.
46.
Вантуз-мен (12.10.2020 / 13:47)
php, проверь приходит ли что-то в $_REQUEST
посмотри что в $request->all();
47.
Дмитрий (12.10.2020 / 23:48)
php, покажи этот метод контроллера.
48.
php (13.10.2020 / 00:52)
Вантуз-мен, $_REQUEST тоже пустой. работает только, если в адресную строку передать параметр, например site.ru?name=123 и т.д.
Добавлено через 04:25 сек.
Дмитрий,
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
class HousingSectorController extends Controller
{
public function setParameters(Request $request)
{
$all = $request->all();
return view('index', ['all' => $all]);
}
49.
php (13.10.2020 / 01:11)
Может в настройке сервера что-нибудь сделать?
Самое интересное, еще пару дней назад все норм было. Потом обновил open server спустя год, чтоб поддержка последнего пыха была, и обнаружил такую проблему.
50.
Вантуз-мен (13.10.2020 / 03:36)
php, ну возможно форма у тебя неправильная исходный код формы скинь
Попробуй отправить запрос через postman к примеру
Проверь настройки max_input_vars , post-max_size, upload_max_filesize, они все могут влияет на Post
51.
php (13.10.2020 / 12:56)
Вантуз-мен, html норм. чиста для проверки создавал простую форму с одним полем и все равно то же самое.
для сравнения скачаю другой сервак, дело не в коде значит
52.
php (13.10.2020 / 13:35)
Вантуз-мен, max_input_vars - был равен 1000 , post-max_size - не было, но я поставил, upload_max_filesize - все в порядке. В общем проверил, размеры "конские" поставил, но не дало результата.
53.
php (13.10.2020 / 14:01)
Вантуз-мен, я просто создал два файла вне ларавэл: html и обработчик php. В итоге все срабатывает, в request приходят данные с формы. Значит в ларавэл нужно что-то подкрутить))
54.
Дмитрий (13.10.2020 / 21:17)
php, скачивать другой сервак не вариант. Я тоже на прошлой неделе обновлял OpenServer (тупо ради php 7.4). И версия Laravel 6.x работает гуд. Правда, для другого сайта на Laravel 8.1 я обновлял пакеты и сделал апдейт композера, он мне автоматом обновил Laravel до версии 8.9.
В любом случае, с новым OpenServer даже старая Laravel 6.x работает норм. У тебя ошибки включены? Попробуй включить и посмотреть.
Блин, тут хрен знает. Покажи код формы и код роута из routs/web.php
Добавлено через 09:20 сек.
php, после $all = $request->all(); сделай dd($all); и покажи что приходит. И форму и роут тоже. Не ссы, разберемся.
Добавлено через 09:40 сек.
Вантуз-мен, max_input_vars , post-max_size, upload_max_filesize по умолчанию в OpenServer настроены гут. Правда post-max_size и upload_max_filesize, насколько я помню, стоят 50 мБ, но он же не файл шлет, а текстовые поля.
55.
Дмитрий (13.10.2020 / 21:48)
Еще подумал. Твой POST обнуляется. Обычно это делает Laravel когда принимает данные и записывает их в Request. Возможно, твой запрос обрабатывает не роут для метода setParameters(), а какой-то другой. Например, покажу заведомо неправильный код:
Route::group(['middleware' => ['web'], 'prefix' => 'youtube', 'as' => 'youtube.'], function()
{
Route::post('/search/{q}/{key?}', ['as' => 'search', 'uses' => 'YoutubeController@search']);
Route::post('/search/channel/{key?}', ['as' => 'channel', 'uses' => 'YoutubeController@channel']);
Route::get('/{key?}', ['as' => 'index', 'uses' => 'YoutubeController@index']);
});
В данном случае если ты принимаешь данные в роуте
channel, то он НЕ сработает, т.к. он ждет фиксированную первую строку 'channel', а роут
search, зарегистрированный выше, ожидает ее же, но в виде переменной $q и посчитает строку 'channel' как содержимое переменной $q.
Эта твоя беда - вообще не беда, решаемо. Вот мы с другом тут воюем с Гуглом. Умудриться проcрать домен за 3 часа с момента регистрации, при чем об этом узнал не сам Гугл, а пожаловался ему Фейсбук, а затем ВК об этом сразу же как-то узнал. А все из-за воровства данных с YouTube. И бесплатные прокси не спасают. Такая эпопея, и чем дальше - тем интереснее. Исследование, достойное целой статьи на Хабре. Вот это гемор))
56.
php (14.10.2020 / 00:09)
Дмитрий, я знаю, что моя проблема пустяковая, однако фиг знает почему в ларавэл request пустой, а если ту же форму обработать самописным пхп обработчиком на том же домене вне ларавэл - все работает!
dd, dump, var_dump - пустые.
Этот же код запускал несколько раз до этого, я знаю, что он рабочий. Черт меня дернул обновить open server именно сейчас, ну и ларавэл последний качнул и такая *** возникла(
URL:
https://visavi.net/topics/40837