Ma question est simple, je souhaite créer une route variable, mais je souhaite créer une fonction variable à l'intérieur de l'itinéraire.
est-ce posable? p>
Route::get('/{tabla}/get','WebSystem\{tabla}@{tabla}')->name('activities');
4 Réponses :
Vous pouvez utiliser une notation différente (il nécessite de modifier l'espace de noms par défaut dans votre routresserviceProvider): qui nous conduit à: p> En outre, cette approche garantit que certains IDE (comme phpstorm) refacteur vos itinéraires. Dans l'exemple: lorsque vous souhaitez modifier le nom ou l'espace de noms de votre contrôleur. p> p>
Oui, vous pouvez.
web.php p> contrôleur.php p>
Vous pouvez utiliser cette méthode
Voir le ci-dessous, cela pourrait fonctionner,
Route::get('/one/{class}/{method}', function(Request $request, $class, $method) use ($router) {
$n = "App\Http\Controllers\ $class";
$n = explode(' ', $n);
$n = implode('', $n);
$n = new $n;
return $n->{$method}($request);
});
Je n'ai pas compris ce que vous voulez réaliser
@GiaComom Je veux créer un itinéraire où le contrôleur et la fonction sont variables
Non, la chaîne cible est toujours interprétée comme une chaîne. Il ne peut pas être défini de manière dynamique.
Vous pouvez éventuellement le faire à l'intérieur d'un contrôleur, mais je ne suis pas sûr de le recommander. Cela peut potentiellement être une grosse canette de vers, gardez le mieux que le couvercle fermé.
Vous pouvez utiliser une fonction de rappel comme cible et résoudre le contrôleur manuellement, mais je vous conseillerais fortement. Cela permettrait d'ignorer les milieux et d'empêcher la mise en cache par exemple.
Je ne pense pas que ce soit une bonne idée, en cas de méthode non trouvée, vous obtiendrez une méthodeNotFoundException à moins que vous n'ayez écrit le __Call (); Pourquoi ne spécifie-vous pas une méthode à appeler alors faire la logique à partir de là-bas à la place ?, Il devrait agir de la même manière, mais il vaut mieux gérer, avoir un appel permet de dire: Callmethodscontroller @ appel, et de là, vous pouvez faire ce que vous voulez, nettoyeur?