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)
А что?
@php
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