Отсутствует аргумент 1 для ArticleController :: update () - PullRequest
0 голосов
/ 09 июля 2019

Я хочу отредактировать и сохранить некоторые поля со своего сайта, но это перенаправляет меня на ошибку. Можете ли вы сказать мне, что не так с моим представлением?Вот мой взгляд, маршрут и контроллер, может быть, вы можете посмотреть. Это не мой код, но я пытаюсь понять, как это работает.Missing argument 1 for App\Http\Controllers\ArticleController::update()

Мой взгляд:

{!! Form::open(['class' => '','url' => 'admin/article/update','id' => 'sky-form3']) !!}

Мой маршрут:

Route::post('admin/article/update/{type?}/{id?}', 'ArticleController@update');

Функция обновления:

public function update($type, $id)
    {
        if($type == "News")
        {
            $article = \App\News::find($id);
            $article->subject = Request::input('subject');
            $article->public = Request::input('public');
            $article->category_id = Request::input('category_id');
            $article->information = Request::input('information');
            $article->save();
        }

        if($type == "Opinion")
        {
            $article = \App\Opinion::find($id);
            $article->subject = Request::input('subject');
            $article->public = Request::input('public');
            $article->category_id = Request::input('category_id');
            $article->opinion = Request::input('opinion');
            $article->save();
        }

        if($type == "Event")
        {

            $article = \App\Event::find($id);
            $article->subject = Request::input('subject');
            $article->public = Request::input('public');
            $article->category_id = Request::input('category_id');
            $article->event_type_id = Request::input('event_type_id');
            $article->country = Request::input('country');
            $article->save();


        }

        if($type == "CareerSolution")
        {
            $article = \App\CareerSolution::find($id);
            $article->subject = Request::input('subject');
            $article->public = Request::input('public');
            $article->topic_category_id = Request::input('topic_category_id');
            $article->topic_subcategory_id = Request::input('topic_subcategory_id');
            $article->location = Request::input('location');
            $article->on_offer = Request::input('on_offer');
            $article->city = Request::input('city');
            $article->employment_type = Request::input('employment_type');
            $article->estimated_salary = Request::input('estimated_salary');
            $article->quantity = Request::input('quantity');
            $article->expires_at = Request::input('expires_at');
            $article->optional = Request::input('optional');
            $article->save();
        }

        if($article != ""){
            flash(trans($type.' has been Updated'), 'success');
        }else{
            flash(trans($type.' has not been updated'), 'warning');
        }

        return redirect(URL::previous());
    }
}

Моя кнопка <a article_type="{{ $article['type'] }}" pop_up_id="{{ $article['type'] }}_{{ $article['id'] }}" role="button" class="btn btn-xs btn-warning modify">

Article.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    protected $table = 'articles';

    public $timestamps = false;

    protected $fillable = [
        'jobtitle', 'category_id','company','expired','formattedLocationFull','url','snippet','jobkey','approved','date','timestamp','modified_date','views','city','state','country','sponsored','indeedApply','jt','salary'
    ];

    // public function career_solution()
    // {
    //     return $this->hasMany('App\CareerSolution','topic_subcategory_id','id');
    // }
}

Ответы [ 4 ]

1 голос
/ 09 июля 2019

Попробуйте изменить свой маршрут следующим образом

Route::post('admin/article/update/{type?}/id/{id?}', 'ArticleController@update')->name('update.article');

, и вы можете просто использовать его как

{{ route('update.article', ['type' => 'some_type', 'id' => 'some_id'] }}

, а затем

    Form::open(array('route' => array('update.article', ['type' => 'some_type', 'id' => 'some_id']), 'method' => 'POST'))
    @csrf
1 голос
/ 09 июля 2019

Вы определяете два необязательных параметра на вашем маршруте, поэтому вам нужно определить их как необязательные параметры в вашем update методе

public function update($type = false, $id = false)

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

Form::open(array('route' => array('route.name', ['id' => $id, 'type' => $type])))

Однако, IMHO, будет лучше избегать использования нескольких необязательных параметров при определении маршрутов.

1 голос
/ 09 июля 2019

Проблема в вашем маршруте, на мой взгляд.{type?} не определено, попробуйте удалить его из маршрута, и все должно быть в порядке.

Route::post('admin/article/update/{id?}', 'ArticleController@update');
0 голосов
/ 09 июля 2019

В зависимости от вашего маршрута заголовок функции должен быть следующим: public function update ($ type = null, $ id = null)

Одна точка улучшения (не решает вашу проблему напрямую, но может помочь).Используйте привязки моделей!Смотри https://laravel.com/docs/5.8/routing#route-model-binding

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...