Когда создается новая страница, часть этих данных поступает в модель слагов (URL-адрес слагов, тип шаблона, идентификатор шаблона), это стандартно для каждой страницы, затем остальные данные отправляются в модель шаблона, в данном случае называемую текстом ( простая текстовая страница).
Слаг требуется для example.com/{slug}, который захватывает slug_url и ищет соответствующую страницу/шаблон для создания правильного представления и передачи правильных данных.
Логика:
Slug requires Text id
Text requires Slug id
Но поскольку я должен сохранять их одновременно, я не уверен, как получить идентификатор одного и одновременно передать его другому, поэтому я придумал это:
- Сохранить новый слаг
- Сохранить новый текст (шаблон страницы)
- Обновить слаг с текстовым идентификатором
Вот код нарушения - TextsController:
public function store()
{
$validator = Validator::make(Input::all(),
array(
'title' => 'required',
'slug_url' => 'required',
'menu_order' => 'required|numeric'
)
);
if($validator->fails()) {
Flash::error('Page not created! Please check errors below');
return Redirect::route('app.pages.index')->withErrors($validator);
} else {
$slug = new Slug;
$slug->user_id = Auth::id();
$slug->slug_url = Input::get('slug_url');
$slug->type = Input::get('type');
$slug->menu_order = Input::get('menu_order');
$slug->save();
$text = new Text;
$text->user_id = Auth::id();
$text->slug_id = $slug->id;
$text->title = Input::get('title');
$text->active = Input::get('active');
$text->save();
$slug_update = Slug::where('user_id', Auth::user()->id)->where('slug_url', $slug->slug_url)->first();
$slug_update->type_id = $text->id;
$slug_update->update();
return Redirect::route('app.texts.edit', $text->id);
}
}
Я новичок в Laravel (и в разработке в целом), но из того, что я видел до сих пор, я почти уверен, что должен быть более чистый способ сделать это?