我创建了一个 StatusController 来更改状态。我有横幅模型和页面模型。
我的 StatusController 看起来像:
namespace App\Http\Controllers;
use App\Banner;
use App\Page;
use Illuminate\Http\Request;
class StatusController extends Controller
{
public function changeStatus($modelName, $id)
{
$model = $modelName::select('id','status')->whereId($id)->first();
if($model->status == 1)
{
$model->status = 0;
} else {
$model->status = 1;
}
$model->update();
$notification = [
'message' => 'Updated Successfully!',
'alert-type' => 'success'
];
return back()->with($notification);
}
}
我的 Web.php 是:
Route::post('status/{modelName}/{status}', 'StatusController@changeStatus')->name('status');
My View看起来像这样:
<form action="{{route('status',['model' => 'Page', 'status' => $page->id])}}" method="POST">
{{csrf_field()}}
<button title="Turn OFF" class="btn btn-xs btn-default">
<i class="fa
@if($page->status==1)
status-active
fa-toggle-on
@else
status-inactive
fa-toggle-off
@endif
fa-2x"></i>
</button>
点击状态图标后,我想更改状态。但是当我点击它。它显示错误。
FatalThrowableError in StatusController.php line 15:
Class 'Page' not found
当我尝试使用dd($ modelName)时,它会显示 Page 。出了什么问题
另外,请告诉我是否还有其他更好的想法来改变状态。对于我的所有模特。
答案 0 :(得分:0)
即使你在顶部有use App\Page;
语句,当你拥有的是类字符串时,php也会在类上调用函数。 Page
与'Page'
不同。相反,您需要使用call_user_func:
$model = call_user_func("App\\$modelName::select", ['id','status'])
->whereId($id)
->first();