La mia applicazione mostra un elenco di progetti, pagine di dettagli del progetto e moduli per modificare questi progetti. Questi sono i percorsi:Symfony2: Come nascondere il collegamento in Twig in base alle autorizzazioni
- /- elenco dei progetti
- /progetto/42 - Progetto visualizzazione (pagina di dettaglio del progetto)
- /progetto/42/modifica - modifica del progetto
Solo il suo proprietario può modificare un progetto.
Ho implementato un Voter per impedire l'accesso a/project/42/edit per i non proprietari.
Ora, voglio anche nascondere il collegamento "modifica progetto" dalla pagina dei dettagli del progetto. Quale sarebbe il modo di fare questo? Idealmente, in Ramoscello, mi piacerebbe fare qualcosa di simile
{% if may_access(path('project_edit', { 'id': project.id })) %} <a href="{{ path('project_edit', { 'id': project.id }) }}">edit project</a> {% endif %}
posso implementare questa funzione come estensione di Twig, ma forse una funzionalità simile già esiste.
Si prega di notare, chiunque può url hack. Assicurati che anche il tuo controller abbia i reindirizzamenti appropriati. – Lighthart
Bel lavoro. Una cosa da notare, se '$ this-> show ($ project);' sta solo restituendo la stessa vista della pagina del progetto (/ project/42). Probabilmente sarebbe meglio usare un reindirizzamento 302 su quella rotta. – Paulpro
Ah, mi dispiace, il mio $ this-> show ($ project) è in realtà solo un piccolo helper che restituisce $ this-> redirect ($ this-> generateUrl ('project_show', array ('id' => $ project- > getId()))); – Olav