Как использовать метод двух контроллеров в одной форме на laravel? - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть productController, и он в основном делает CRUD хорошо.Но есть проблема.Мои методы контроллера становятся слишком длинными.Поэтому я решил отделить ImageController и таблицу изображений от продуктов .Потому что картинок надо выложить на CRUD.

Тем не менее, форма, которая загружает эти элементы, совпадает с формой загрузки изображений.Итак, что является лучшим способом сделать два контроллера из одной формы?И как должен выглядеть маршрут?


Примечание: это общий вопрос.Также код слишком длинный.Вот почему я не добавил код здесь.

1 Ответ

0 голосов
/ 17 сентября 2018

Это очень широкий вопрос, но, похоже, вам необходимо установить связь между моделями Product и Image (при условии, что вы используете модели с контроллерами, которые вы указали в своем вопросе), чтобы у продукта был один образ.Затем, когда вы сохраняете продукт, вы можете вызвать метод Image магазина на изображении следующим образом:

$ product-> image-> storeImage ($ img);

Где $ img - этофайл изображения, который вы загружаете.Отношения будут выглядеть так:

Products.php:

public function image()
{
    return $this->hasOne('App\Image');
}

Image.php:

public function product()
{
    return $this->belongsTo('App\Product');
}

Это не исчерпывающий ответ, но, надеюсь, поможет вамначал в правильном пути.Конечно, вам все равно нужно будет добавить другой код, например, пользовательскую функцию «store» в модель Image, и убедиться, что у вас есть правильные миграции (article_id в модели Image, image_id в модели Product), но этобудет одним из способов отделить код и сделать ваш контроллер легче.Вот пример того, что вы бы сделали в модели Image.php для хранения изображения:

class Image extends Model {

    public function storeImage($img){
        //code goes here to store image
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...