2015-04-04 5 views
0

J'ai le code ci-dessous dans mon application. Le problème est le @ (arobase). Quand il est là, j'obtiens une coloration syntaxique et des erreurs comme si la chaîne ne se terminait pas. Lorsque l'enlever, la page fonctionne bien (moins l'action n'existe pas). J'ai essayé d'échapper au @ et ça ne marche pas. J'ai aussi essayé des guillemets, mais ça ne marche pas non plus. Comment puis-je m'échapper @?Utilisation de @ (arobase) dans les chaînes PHP Laravel

Je pourrais utiliser la fonction route et éviter complètement le @ mais je pense que la fonction d'action est beaucoup plus claire en termes de ce qu'il fait, donc je préfère ne pas utiliser route.

@extends('layouts.default') <?php 
$url = URL::action('[email protected]'); ?> 

@section('header') 
    @include('partials.components.searchHeader', array('title' => "Users", 'results' => $users->getTotal(), 'total' => $total, 'url' => URL::route('users.index'), 'type' => 'user')) 
@stop 

<?php 
if(Auth::user()->isAdmin()) $publishedFellows = Fellow::published()->get(); 
if(!Auth::user()->isFellow()) $publishedOpportunities = Opportunity::select('opportunities.*')->published()->sortedByCompany()->get(); ?> 

@section('content') 
    @if(Auth::user()->isAdmin()) 
     @include('partials.components.add-button', array('url' => '/users/create', 'name' => 'Add User')) 
    @endif 
    <?php $partialsList = [ 
     'listItems' => $users, 
     'search' => $search, 
     'url' => URL::route('users.index'), 
     'pills' => $pills, 
     'indexView' => 'users.single', 
     'type' => 'user', 
     'total' => $total, 
    ]; ?> 
    @include('partials.list') 
@stop 
+0

Le '@' est utilisé dans les modèles de lames, pas dans le code –

+0

ne fait que remplir les variables dans le contrôleur et l'utiliser dans la template, – tttony

Répondre

0

Pour échapper à @ symboles dans la lame - il suffit d'utiliser un double @@.

donc ceci:

@@example 

imprimera

@example 

Cependant votre code est très salissant, et qui vous cause probablement des problèmes. Le plus gros problème est que vous utilisez extend - mais alors vous mettez du code entre les sections, qui n'est pas appelé correctement. En outre - le code que vous mettez entre les sections pour enregistrer des variables n'est même pas appelé n'importe où!

Vous devez factoriser votre point de vue à quelque chose comme ceci pour résoudre le problème:

@extends('layouts.default') 

@section('header') 
    @include('partials.components.searchHeader', ['title' => "Users", 'results' => $users->getTotal(), 'total' => $total, 'url' => URL::route('users.index'), 'type' => 'user']) 
@stop 


@section('content') 
    @if(Auth::user()->isAdmin()) 
     @include('partials.components.add-button', ['url' => '/users/create', 'name' => 'Add User']) 
    @endif 
    @include('partials.list', ['listItems' => $users, 'search' => $search, 'url' => URL::route('users.index'), 'pills' => $pills, 'indexView' => 'users.single', 'type' => 'user', 'total' => $total]) 
@stop 
+0

Mon code n'est pas en désordre. Au début, j'avais ces longues lignes ridicules dans mon code, mais cela devenait trop lourd. Le tableau est immédiatement consulté dans la vue incluse pour les vars nécessaires et agit comme une sorte d'espace de noms, empêchant ainsi une page de fonctionner avec un même nom var provenant d'un fichier précédent. – merlinpatt

+0

Votre problème est que les variables ne sont pas définies comme vous le pensez. Vous devez les transmettre à tous les fichiers inclus. Vous ne pouvez pas simplement déclarer des variables entre '@ section' et penser que cela fonctionnera - cela ne sera pas fiable, et vous risquez de rencontrer des erreurs comme celles que vous avez. – Laurence

+0

Et vous pouvez changer les longues lignes en courtes, ce n'était pas le bit dont je parlais - je fais référence aux multiples déclarations de variables dispersées au hasard dans votre fichier de vue. – Laurence