製品のスライダーがあり、各製品の最低価格を見つけようとしています。
だから、まず、コントローラーから関数を正常に呼び出して、製品のid
を渡し、それを印刷しようとしています。
blade.php
<span class="text-bold">
@php
use App\Http\Controllers\ServiceProvider;
echo ServiceProvider::getLowestPrice($product_cat->id);
@endphp
</span>
ルート
Route::post('/getLowestPrice/{id}', 'ServiceProvider@getLowestPrice');
コントローラー
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ServiceProvider extends Controller
{
public static function getLowestPrice($id) {
return $id;
}
}
そして、エラーが発生します
Parse error: syntax error, unexpected 'use' (T_USE)
use
がここで機能しない理由は何ですか?
メソッド内でuse
キーワードを使用することはできません
このように完全なクラスパスを書くことができます
<span class="text-bold">
@php
echo App\Http\Controllers\ServiceProvider::getLowestPrice($product_cat->id);
@endphp
</span>
@ALiは明らかに正しいので、彼の答えを受け入れることをお勧めします。
ただし、この正確な目的のために作成されたサービスインジェクションディレクティブもあり、使用するのが少しすっきりしています。
@inject('provider', 'App\Http\Controllers\ServiceProvider')
<span class="text-bold">
{{ $provider::getLowestPrice($product_cat->id) }}
</span>
ドキュメント: https://laravel.com/docs/5.5/blade#service-injection
//Create a static type function in your controller.The function must be a static type function.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ServiceProvider extends Controller
{
public static function getLowestPrice($val){
// do your stuff or return something.
}
}
//Then Call the ServiceProvider Controller function from view
//include the controller class.
<?php use App\Http\Controllers\ServiceProvider;?>
//call the controller function in php way with passing args.
<?php echo ServiceProvider::getLowestPrice($product_cat->id); ?>
// Or call the controller function in blade way.
{{ServiceProvider::getLowestPrice($product_cat->id)}}
さらに簡単になります。次のように直接呼び出すことができます。
<span class="text-bold">
{{App\ServiceProvider::getLowestPrice($product_cat->id)}}
</span>
ビューからコントローラー関数を呼び出す簡単な概念は次のとおりです。 href = "Your URL"が表示されたボタンがあります
<a href="/user/projects/{id}" class="btn btn-primary">Button</a>
次に、web.phpでルートを定義します。
Route::get('/user/projects/{id}', 'user_controller@showProject');
各コントローラーの機能は次のようになります。
public function showProject($id){
$post =posts::find($id);
return view('user.show_projects')->with('post', $post);;
}
これがお役に立てば幸いです。