Как получить значение одного из атрибутов, используемых Backpack?

#laravel-5.3 #laravel-backpack

#laravel-5.3 #laravel-backpack

Вопрос:

Например, мне нужно взять значение «id» и использовать его для поиска моей модели Article, но это значение (id), которое также отображается в URL: «/article / 4 / edit» и в параметрах «setColumns», я понятия не имею, какчтобы получить его.

Мне нужна ваша помощь. Это мой пример кода:

ArticleCrudController.php

 public function __construct()
{
    parent::__construct();

    $this->crud->setModel('AppModelsArticle');
    $this->crud->setRoute("admin/article");
    $this->crud->setEntityNameStrings('article', 'articles');

    $this->crud->setColumns(['id', 'title', 'text']);

    // WHERE ARE YOU ID?!?!!!
    $article = Article::findOrFail($id);
    $pictures = $article->picture()->first()->name;

    $this->crud->addFields([
        [
            'name' => 'title',
            'label' => 'Title',
            'type' => 'Text'
        ],
        [
            'name' => 'text',
            'label' => 'Text',
            'type' => 'ckeditor'
        ],
        [   // Browse
            'name' => 'image',
            'label' => 'Article immage',
            'type' => 'browse',
            'value' => $pictures //Obviously without id don't work :'(
        ]

    ]);

}
  

Ответ №1:

Вы могли бы попытаться переопределить CrudController::edit метод, которому передается идентификатор в качестве первого параметра.

 public function edit($id)
{
    $articlePicture = Article::findOrFail($id)->picture()->first()->name;

    $this->crud->addField([
        'name' => 'image',
        'value' => $articlePicture
    ]);

    return parent::edit($id);
}
  

Это может быть решением, но я не уверен, что это правильный способ сделать то, что вы хотите.

Комментарии:

1. Это не точный способ, но это идеальный способ! Вы решили все мои проблемы! Ты гений! Большое вам спасибо!

Ответ №2:

Используйте getCurrentEntry, чтобы получить текущий объект модели в crud

 $article_id = $this->crud->getCurrentEntry()->id;