Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 28

Hybrid View

  1. #1
    Un'altra cosa che non capisco è il criterio con cui creare le viste. Nella guida che sto leggendo per esempio ho un controller di questo tipo:

    Codice PHP:
    <?php
    namespace Users\Controller;
    use 
    Zend\Mvc\Controller\AbstractActionController;
    use 
    Zend\View\Model\ViewModel;
    class 
    IndexController extends AbstractActionController {
        public function 
    indexAction() {
            
    $view = new ViewModel();
            return 
    $view;
        }
        public function 
    registerAction() {
            
    $view = new ViewModel();
            
    $view->setTemplate('users/index/new-user');
            return 
    $view;
        }
        public function 
    loginAction() {
            
    $view = new ViewModel();
            
    $view->setTemplate('users/index/login');
            return 
    $view;
        }
    }
    ma 3 views di questo tipo:
    index.phtml
    codice HTML:
    <h1>Welcome to Users Module</h1>
      <a href="/users/index/login">Login</a> | <a href="/users/  index/register">New User Registration</a>
    login.phtml
    codice HTML:
    <h2> Login </h2>
      <p> This page will hold the content for the login form </p>  <a href="/users"><< Back to Home</a>
    new-user.phtml
    codice HTML:
    <h2> New User Registration </h2>
      <p> This page will hold the content for the registration  form </p>  <a href="/users"><< Back to Home</a>
    Perché nel file index c'è scritto /users/index/register e non /users/index/new-user. Ancor meno comprendo le ragioni di simile complicanza.
    Inoltre nel controller non vedo una logica ovvero scrivo quel codice perché la guida mi dice di fare così ma io non ci sarei mai arrivato da solo, spero che sia una semplice direttiva di installazione del modulo users...
    Più pratica in futuro...

  2. #2
    perchè un conto è la rotta (href => /users/index/register che viene mappata in Users/Controller/IndexController->registerAction ) e un conto è il template per la vista (che lui ha chiamato new-user)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    perchè un conto è la rotta (href => /users/index/register che viene mappata in Users/Controller/IndexController->registerAction ) e un conto è il template per la vista (che lui ha chiamato new-user)
    Ho capito, in pratica si passa sempre attraverso al controller anche per i semplici collegamenti. Poco per volta comincio a capire ma sono ancora ben lontano da apprezzarne i vantaggi...

    Sempre grazie

    P.S.: Per il redirect invece che mi dici? Funziona anche su linux ed apple? L'html5 ha introdotto qualche novità?

    P.S.2: Se voglio cambiare template a quello presente devo mettere le fagine in php a questo indirizzo:

    C:\xampp\htdocs\ZF2\module\Application\view\layout

    sostituendo gli url e i contenuti con i codici php che trovo nell'originale e mettere tutti i css, le immagini ed i file in:

    C:\xampp\htdocs\ZF2\public

    giusto?
    Ultima modifica di giannino1995; 01-01-2015 a 22:50
    Più pratica in futuro...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    I vantaggi li vedi quando devi creare grosse applicazioni, non per un sitarello.

  5. #5
    Altre 2 domande:

    (1)


    La guida dice di editare C:\xampp\htdocs\ZF2\module\Users\config\module.con fig.php
    in questo modo:
    Codice PHP:
    'users' => __DIR__ '/../view'
    la stringa sopra equivale a:
    Codice PHP:
    'users' => 'C:\xampp\htdocs\ZF2\module\Users\config' '/../view'
    ovvero a:
    Codice PHP:
    'users' => 'C:\xampp\htdocs\ZF2\module\Users\view'
    ?

    (2)

    Non riesco a capire questo discorso:

    Routes – The last module configuration is to define a route for accessing
    this module from the browser; in this case we are defining the route as
    /users, which will point to the index action in the Index controller of
    the Users module:
    Codice PHP:
    'router' => array(
    'routes' => array(
    'users' => array(
    'type' => 'Literal',
    'options' => array(
    'route' => '/users',
    'defaults' => array(
    '__NAMESPACE__' =>
    'Users\Controller',
    'controller' => 'Index',
    'action' => 'index',
    ),
    ), 
    Dentro Controller, per esempio c'è IndexController.php, non index o Index.
    Ultima modifica di giannino1995; 03-01-2015 a 21:09
    Più pratica in futuro...

  6. #6
    Risposte:

    1) http://php.net/manual/it/language.co...predefined.php

    2) non conosco tutto ZF, ma ad occhio quel codice dice che la rotta /routes viene mappata al controller IndexController, metodo "index" nel namespace Users\Controller (da cui poi dovresti avere un file IndexController.php in Users/Controller ). Insomma, sono convenzioni del framework, ognuno ha le sue
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    1) però non capisco quei puntini che significano...

    Codice PHP:
    'users' => 'config' '/../view'
    è giusta la mia intuizione? Non hai risposto alla domanda...

    2) comunque non so come fai a capire che c'è un IndexController.php dato che dentro quel pezzo di codice non c'è scritto neppure IndexController...
    Più pratica in futuro...

  8. #8
    scusa non avevo capito il senso della prima domanda

    1)

    i '/../' vuol dire "torna indietro di un livello dalla directory che sta a sinistra del primo /. Quindi __DIR__.'/../view' vuol dire "vai nella cartella padre di quella puntata da __DIR__ ed entra nella sotto cartella view". Se ad esempio __DIR__ è "c:\project\name\config", __DIR__.'\..\view' equivale a "c:\project\name\view". Puoi provare usando una shell windows/linux e provando col comando cd

    2)

    ho detto che sono "convenzioni", ovvero il framework fà delle asserzioni dando per scontato che tu le stia rispettando. In soldoni, quando il front controller (istanziato dalla index.php della root del tuo progetto che dovresti aver già individuato) chiede al router "ma quale controller devo istanziare se la url richiesta è /users ?", il router risponderà "guarda il controller è Index, metodo index, namespace Users\Controller". Allora il front controller potrebbe fare una cosa del tipo:

    Codice PHP:

    .....

    $entry $router->resolve("/users");
    $controller $entry['controller'];
    $action$entry['action'];
    $namespace $entry['__NAMESPACE__'];

    $class = new RefelctionClass($namespace.'\\'.$controller.'Controller');
    $method $class->getMethod($action.'Action'); //non ricordo se in ZF le azioni dei controller richiamabili da url debbano avere il suffisso 'Action'

    $instance $class->newInstance($anyParams);
    ...

    print_r($method->invoke($instance,$anyParams)); 
    Poi se vuoi vedere ZF come usa ste cose, dovresti leggerti il codice sorgente delle classi. Però l'idea di massima dovrebbe essere una cosa simile
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    1) ok thanks
    2) ok thanks
    Più pratica in futuro...

  10. #10
    Adesso Zend Framework ha smesso di funzionare infatti quando scrivo localhost nel browser mi compare una pagina bianca ed il cerchietto di attesa al posto della favicon. Se vado nel task manager vedo tutte e 6 le cpu andare al 100%. Il processo che mi satura tutta la cpu è Apache HTTP Server. La ram è al 16% mentre il disco a 1%. E' tutto molto strano. Dopo quasi un minuto di caricamento mi compare una pagina di errore lunga un chilometro:

    codice:
    Warning: Uncaught exception 'Zend\Mvc\Router\Exception\RuntimeException' with message 'Route with name "register" not found' in C:\xampp\htdocs\ZF2\vendor\zendframework\zendframework\library\Zend\Mvc\Router\Http\TreeRouteStack.php:317 Stack trace: #0 C:\xampp\htdocs\ZF2\vendor\zendframework\zendframework\library\Zend\Mvc\Router\Http\Part.php(210): Zend\Mvc\Router\Http\TreeRouteStack->assemble(Array, Array) #1 C:\xampp\htdocs\ZF2\vendor\zendframework\zendframework\library\Zend\Mvc\Router\Http\TreeRouteStack.php(351): Zend\Mvc\Router\Http\Part->assemble(Array, Array) #2 C:\xampp\htdocs\ZF2\vendor\zendframework\zendframework\library\Zend\View\Helper\Url.php(100): Zend\Mvc\Router\Http\TreeRouteStack->assemble(Array, Array) #3 [internal function]: Zend\View\Helper\Url->__invoke('users/register') #4 C:\xampp\htdocs\ZF2\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php(399): call_user_func_array(Object(Zend\View\Helper\Url), Array) #5 C:\xampp\htdocs\ZF2\module\Application\view\layout\layout.phtml in C:\xampp\htdocs\ZF2\vendor\zendframework\zendframework\library\Zend\Mvc\Router\Http\TreeRouteStack.php on line 317
    Call Stack
    Più pratica in futuro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.