J'ai un slider de produits et j'essaie de trouver le prix le plus bas de chaque produit.
J'essaie donc tout d'abord d'appeler avec succès une fonction à partir d'un contrôleur et de transmettre la id
du produit, ainsi que de l'imprimer.
blade.php
<span class="text-bold">
@php
use App\Http\Controllers\ServiceProvider;
echo ServiceProvider::getLowestPrice($product_cat->id);
@endphp
</span>
Itinéraire
Route::post('/getLowestPrice/{id}', 'ServiceProvider@getLowestPrice');
Manette
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ServiceProvider extends Controller
{
public static function getLowestPrice($id) {
return $id;
}
}
Et je reçois une erreur
Parse error: syntax error, unexpected 'use' (T_USE)
Avez-vous une idée de la raison pour laquelle use
ne fonctionne pas ici?
vous ne pouvez pas utiliser le mot clé use
dans la méthode
vous pouvez écrire le chemin complet de la classe, comme ceci
<span class="text-bold">
@php
echo App\Http\Controllers\ServiceProvider::getLowestPrice($product_cat->id);
@endphp
</span>
@ALi est évidemment correct et je vous suggère d'accepter sa réponse.
J'aimerais toutefois ajouter qu'il existe également une directive sur l'injection de service, conçue spécifiquement à cet effet et qui est un peu plus propre à utiliser.
@inject('provider', 'App\Http\Controllers\ServiceProvider')
<span class="text-bold">
{{ $provider::getLowestPrice($product_cat->id) }}
</span>
//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)}}
Un concept simple, permettant d’appeler la fonction de contrôleur depuis l’affichage est: Vous avez un bouton en vue avec href = "Votre URL"
<a href="/user/projects/{id}" class="btn btn-primary">Button</a>
Définissez maintenant un itinéraire dans web.php:
Route::get('/user/projects/{id}', 'user_controller@showProject');
Une fonction dans le contrôleur respectif ressemblera à ceci:
public function showProject($id){
$post =posts::find($id);
return view('user.show_projects')->with('post', $post);;
}
J'espère que cela t'aidera.
Cela peut être encore plus facile, vous pouvez l'appeler directement comme ceci:
<span class="text-bold">
{{App\ServiceProvider::getLowestPrice($product_cat->id)}}
</span>