ePrivacy and GPDR Cookie Consent by Cookie Consent
Unterstütze unsere Tutorials mit einem WerbeClick!

Symfony 2.4 Tutorial :: Teil 3 statische Seiten

Write a comment

Vorwort

Es lohnt sich immer im Vorfeld einen Blick in den Befehlsumfang des Symfony-Frameworks zu werfen. Das erreicht man in dem man das Kommando
php app/console
aufruft. Es werden dann alle Befehle aufgelistet!

 

Jedes Kommando kann wiederum mit dem help Parameter zusätzlich inspiziert werden.

 

# php app/console help generate:controller


Usage:
generate:controller [--controller="..."] [--route-format="..."] [--template-format="..."] [--actions="..."]

Options:
--controller The name of the controller to create
--route-format The format that is used for the routing (yml, xml, php, annotation) (default: "annotation")
--template-format The format that is used for templating (twig, php) (default: "twig")
--actions The actions in the controller (multiple values allowed)
--help (-h) Display this help message.
--quiet (-q) Do not output any message.
--verbose (-v) Increase verbosity of messages.
--version (-V) Display this application version.
--ansi Force ANSI output.
--no-ansi Disable ANSI output.
--no-interaction (-n) Do not ask any interactive question.
--shell (-s) Launch the shell.
--process-isolation Launch commands from shell as a separate process.
--env (-e) The Environment name. (default: "dev")
--no-debug Switches off debug mode.

Help:
The generate:controller command helps you generates new controllers
inside bundles.

By default, the command interacts with the developer to tweak the generation.
Any passed option will be used as a default value for the interaction
(--bundle and --controller are the only
ones needed if you follow the conventions):

php app/console generate:controller --controller=AcmeBlogBundle:Post

If you want to disable any user interaction, use --no-interaction
but don't forget to pass all needed options:

php app/console generate:controller --controller=AcmeBlogBundle:Post --no-interaction

 

1. Controller anlegen

Für die statischen Seiten "Page1 und Page2" legen wir eine gemeinsame Controller-Klasse an.
Diese Controller-Klasse muss dem von uns erstellten Bundle zugeordnet werden!

 

# php app/console generate:controller --controller=EfiBlogBundle:Articles

Dank der interaktiven Symfony-Kommandos werden jetzt einige Fragen gestellt. Es reicht aber erst einmal
alles mit Enter zu bestätigen!

 

Es wurde jetzt eine neue Datei mit Namen "ArticlesController.php" im Ordner Efi/BlogBundle/Controller erstellt.

symfony controller

In diese Datei fügen wir jetzt die Action für unsere erste Page ein:

<?php

namespace Efi\BlogBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class ArticlesController extends Controller
{

    public function page1Action() {

    return array();
    }

}

 

2. View anlegen

 

Analog zu der Action "page1Action" soll es jetzt eine View geben.
Hierzu erstellen wir im Verzeichnis "views" unseres Bundles einen Unterordner mit dem Namen "Articles".
Darin legen wir eine Twig-Template Datei mit dem Namen "page1.html.twig" an!

 

symfony twig view

Der Inhalt der Page1 kann innerhalb des body Blocks beliebig hinzugefügt werden. 
Wichtig ist hierbei die Angabe: {% extends "EfiBlogBundle::layout.html.twig" %} die dem Template sagt von welchem Layout sie erben soll!

 

{# page1.html.twig #}
{% extends "EfiBlogBundle::layout.html.twig" %}
{% block title %}Page 1{% endblock %}
{% block body %}
<h2>Page 1</h2>
<p>
Ein bisschen Blindtext kann nicht schaden ...
</p>
{% endblock %}

 

 

3. Route für die Page1 definieren

 

Die Verbindung von einem Controller zu der View wird über die sogenannten Routes im Symfony-Framework geregelt. Da wir "annotations" gewählt haben, können wir jetzt die Routes über der Action-Methode angeben!

 

/**
* @Route("/page1", name="page1")
* @Template()
*/
public function page1Action() {

    return array();
}

 

Über die URL http://webprojekt.localhost/app_dev.php/page1 kann die neue Seite jetzt getestet werden.

 

 

Für die zweite Seite (Page2) kann man jetzt die Schritte wiederholen. Hierzu einfach eine weitere Action und ein Twig-Template analog anlegen!

Der gesamte Controller:

 

<?php
// File: src/Efi/BlogBundle/Controller/ArticlesController.php
namespace Efi\BlogBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class ArticlesController extends Controller
{

    /**
    * @Route("/page1", name="page1")
    * @Template()
    */
    public function page1Action() {

        return array();
    }


    /**
    * @Route("/page2", name="page2")
    * @Template()
    */
    public function page2Action() {

        return array();
    }

}

 

 

 

Die zweite Seite (page2)

 

{# page2.html.twig #}
{% extends "EfiBlogBundle::layout.html.twig" %}
{% block title %}Page 2{% endblock %}
{% block body %}
<h2>Page 2</h2>
<p>
    Dies ist unsere zweite Seite ...
</p>
{% endblock %}

 

 

Die URL für die zweite Seite lautet dann: http://webprojekt.localhost/app_dev.php/page2

 

>> Weiter zu Teil 4

 

Say something here...
You are a guest
or post as a guest
Loading comment... The comment will be refreshed after 00:00.

Be the first to comment.

Unterstütze unsere Tutorials mit einem Werbeclick!

Über uns

Wir sind ein agiles Team von Softwareentwicklungen, UX-Designern und IT-Supporten und haben uns auf individuelle Softwarelösung für den Mittelstand spezialisiert. Unsere besondere Stärken sind  Web-Anwendungen mit dem Symfony Framework sowie individuelle Industrielösungen für Produktionslinien, Servicetechniker oder Inspekteure zu entwickeln. Eine weitere Stärke ist die Erweiterung von Content Management Systemen wie beispielsweise Wordpress, Typo3, Drupal und Joomla. Das entwickeln von Apps für Android, Windows und Apple OS Systemen ist selbstverständlich!