0

softdelete を試してみましたが、コードの何が問題なのかまだわかりません。削除しようとするたびに。そうではありません、それは私にページを投げ返します。

これは、削除する前の確認ページのコントローラーです。

public function deleteView($id)
    {
        $company = Company::find($id);
        return view('company.show')->with('company', $company);
    }

これは、削除する前に確認するビューです。

@extends('layouts.member')

    @section('content')
        {!! Form::open(array('action'=> array('CompanyController@destroy', $company->id, '_method'=>'delete'))) !!}
        {!! Form::token() !!}

            <p>{!! $company->companyname !!}</p>
            <p>{!! $company->companyaddress !!}</p>
            </p>{!! $company->country !!}</p>
            <p>{!! $company->state !!}</p>
            <p>{!! $company->email !!}</p>
            <p>{!! $company->phone !!}</p>
            <p>{!! $company->website !!}</p>
            <p>{!! $company->companytype !!}</p>

            {!! Form::hidden('company_id', $company->id) !!}
            <p>{!! Form::submit('DELETE') !!}</p>
        {!! Form::close() !!}
    @stop

これは、削除を実行するコントローラーです。

public function destroy(CompanyRequest $companyRequest)
    {
        $company_id = $companyRequest->company_id;
        if(!$this->companyBelongsToUser($company_id))
        {
            return redirect()->route('companyindex', $company_id)->with('message', 'Sorry, yuo cannot delete this company');
        }else
        {
            $company = Company::findOrFail($company_id);
            $company->delete();

            return redirect()->route('companyindex', $company_id)->with('message', 'Company deleted successfully');
        }
    }

これは、削除する前に確認ページに戻るルートです。

Route::get('delete/{id}', array('as'=>'deleteView', 'uses'=>'CompanyController@deleteView'));

これは、実際の削除のルートです。

Route::delete('deletecompany/{id}', array('as'=>'deleteCompany', 'uses'=>'CompanyController@destroy'));

これは、ユーザーが想定されたユーザーであるかどうかを確認する機能です。

private function companyBelongsToUser($id){
        $company = Company::find($id);
        if($company->user_id == Auth::user()->id){
            return true;
        }
        return false;
    }
4

1 に答える 1

0

最後に、私はそれを解決しました。主な問題は、実行時に会社の ID を取得しようとしていたが、利用できなかったことです。

驚いたことに、Laravel は私が手動でやろうとしていたことを既に気にかけています。私がしたことは、ジェネリック ID を渡すことだけで、Laravel は私が問い合わせようとしている会社を見つけ出し、仕事をしてくれました。

public function destroy($id)
    {
        $company = Company::findOrFail($id);
        if(!$company->user_id === Auth::user()->id)
        {
            return redirect()->route('companyindex')->with('message', 'Sorry, you cannot delete this company');
        }else{
            $company->delete();
            return redirect()->route('companyindex')->with('message', 'Company successfully deleted.');
        }
    }
于 2015-12-21T19:18:51.493 に答える