我刚刚开始学习Laravel,我陷入了一个问题,我想从数据库中获取数据并将其传递到刀片(视图)文件,然后在另一个视图文件中使用此视图,并希望将一个变量传递给控制器,但出现此错误:
“找不到类'adsController'”
web.php
Route::get('seller/panel', 'sellerController@panel');
panel.blade.php
@include('seller\hook\ads')
sellerController.php
public function panel(){
$ads = DB::table('ads')->get();
return view('hook\ads', ['ads' => $ads]);
}
adsController.php
class adsController extends Controller {
public function getStatus($p) {
if ($p == 'something') {
$status = 'yeah';
} else {
$status = 'blah blahe';
}
return view('hook\ads', $status);
}
}
ads.blade.php
<div class="ads">
@foreach ($ads as $ad)
{{ $ad->name }}
{{ adsController::getStatus($ad->approved) }}
@endforeach
</div>
因此,如您所见,我正试图从sellerController.php
的数据库中获取数据,然后将其传递给ads.blade.php,然后我想在ads.blade.php中使用adsController.php
的功能,但找不到adsController
对不起,我是laravel的新手
答案 0 :(得分:1)
正如大家所说,不建议从视图中调用控制器。 这就是我要做的:
在您的模型中:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Ad extends Model{
public function getStatus()
{
return $this->approved == 'something' ? 'yeah' : 'blah blaehe';
}
}
您认为:
<div class="ads">
@foreach ($ads as $ad)
{{ $ad->name }}
@include('hook.ads', ['status' => $ad->getStatus()])
@endforeach
</div>
在您的控制器中:
public function panel(){
$ads = \App\Ad::all();
return view('hook\ads', ['ads' => $ads]);
}
答案 1 :(得分:0)
尽管我不推荐您尝试实现的方法,您仍应尝试此操作。
{!! app('App\Http\Controllers\adsController')->getStatus($ad->approved) !!}
它应该工作,但这是非常错误的。
答案 2 :(得分:0)
在刀片文件的开头,您可以添加以下内容
@php
use App\Http\Controllers\adsController as adsController;
@endphp
然后在刀片模板上,可以像在此一样使用控制器。 但是,直接使用它是一个非常不好的习惯。
由于您是Laravel的新手,因此请更改该编码做法。
如果您希望始终在特定刀片视图上显示该数据,则可以使用某种服务提供商。
答案 3 :(得分:0)
大多数情况下,当控制器中的名称空间声明错误时,您将收到此错误。典型的情况是,您使用Artisan生成控制器存根,然后将其从默认位置移到其他位置。
在某些情况下,您需要运行:
composer dumpautoload
生成新的优化的类加载器映射。