Когда новая страница создается, часть этих данных переходит в модель слагов (URL-адрес слагов, тип шаблона, идентификатор шаблона), это стандартно для каждой страницы, затем остальные данные переходят в модель шаблона, в данном случае называемую текстом ( простая текстовая страница).
Плагин требуется для example.com/ enjslug}, который захватывает 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 (и разработке в целом), но из того, что я вижу до сих пор, я почти уверен, что должен быть более чистый способ сделать это?
Вы можете изменить эти строки:
$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();
в:
$slug->type_id = $text->id;
$slug->save();
Других решений пока нет …