Aiuto zend non mi trova conenuto variabile nella vista

Salve a tutti sono un novizio su zend framework, ho realizato la mia prima applicazione,quando accedo al sito, mi parte l'indexController dell'applicazione, infatti vedo quello che ho nella views-scripts-index-index.phtml e cioè:

Hello World!

perfetto,in questa vista ho un href per un'altro controller chiamato prova,e coin rispettiva vista:

views-scripts-prova-prova.phtml

e nello spostamento del link ic sono..

Il mio problema è che se nel controller IndexController all'action index (o qualsiasi altra) metto questa cosa:

$this->view->cont = 'hello word';

e nella vista (views-scripts-index-index.phtml) lo richiamo così:

<?= $this->cont ?>

nella pagina che apro mi esce questo:

cont ?> e nient'altro,

se invece sempre in questa vista  (views-scripts-index-index.phtml)  lo richiamo così:

<?php $this->cont ?>

ho una pagina vuota.

Da quello che riesco ad intuire è che la vista del framework non mi vede le variabili che creo nel controller,e risultano vuote..

il mio index come bootstrap ha questo:

<?php

   set_include_path('../library/Zend'.PATH_SEPARATOR.get_include_path());

   require_once( "Zend/Controller/Front.php");

   $controller = Zend_Controller_Front::getInstance();

   $controller->setControllerDirectory( "../application/controllers");

   require_once('Zend/Loader.php');

   Zend_Loader::loadClass('Zend_Loader_Autoloader');

   $autoloader = Zend_Loader_Autoloader::getInstance();

   $autoloader->registerNamespace('My_');

   $controller->dispatch();

?>

Non sò cos'altro pensare, fatemi sapere grazie mille...

saluti a tutti

inviato 6 anni fa
superson_16
X 0 X

ma scusa prova così

<?php echo $this->cont; ?>

cosa ti restituisce?

risposto 6 anni fa
civre
X 0 X

Ciao ho provato anche questo il risultato è una pagina bianca..C'è qualcosa da configurare forse?Qualcosa che ocllega vista al  controller?

risposto 6 anni fa
superson_16
X 0 X

sicuramente qualcuno potrà aiutarti meglio di me comunque se ti può essere d'aiuto il mio index e così:

<?php

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();
risposto 6 anni fa
civre
X 0 X

Ciao grazie,il tuo è un pò diverso,però suppongo che il mio vada bene per un'applicazione di base... Dov'è questo qualcuno?Quì c'è un'emergenza  :'(

risposto 6 anni fa
superson_16
X 0 X

Nessuno che sia capace di capire questo problema????????

risposto 6 anni fa
superson_16
X 0 X

controlla sul log degli errori di Apache se ci sono delle segnalazioni

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

Il mio log ha questo contenuto:

[Thu Nov 04 12:14:01 2010] [notice] Digest: generating secret for digest authentication ...

[Thu Nov 04 12:14:01 2010] [notice] Digest: done

[Thu Nov 04 12:14:03 2010] [notice] Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations

[Thu Nov 04 12:14:03 2010] [notice] Server built: Nov 11 2009 14:29:03

[Thu Nov 04 12:14:03 2010] [notice] Parent: Created child process 596

[Thu Nov 04 12:14:07 2010] [notice] Digest: generating secret for digest authentication ...

[Thu Nov 04 12:14:07 2010] [notice] Digest: done

[Thu Nov 04 12:14:08 2010] [notice] Child 596: Child process is running

[Thu Nov 04 12:14:08 2010] [notice] Child 596: Acquired the start mutex.

[Thu Nov 04 12:14:08 2010] [notice] Child 596: Starting 150 worker threads.

[Thu Nov 04 12:14:08 2010] [notice] Child 596: Starting thread to listen on port 443.

[Thu Nov 04 12:14:08 2010] [notice] Child 596: Starting thread to listen on port 443.

[Thu Nov 04 12:14:08 2010] [notice] Child 596: Starting thread to listen on port 80.

[Thu Nov 04 12:14:08 2010] [notice] Child 596: Starting thread to listen on port 80.

[Thu Nov 04 12:31:00 2010] [error] [client ::1] File does not exist: C:/Program Files/xampp/htdocs/favicon.ico

[Thu Nov 04 12:31:00 2010] [error] [client ::1] File does not exist: C:/Program Files/xampp/htdocs/favicon.ico

[Thu Nov 04 12:31:03 2010] [error] [client ::1] File does not exist: C:/Program Files/xampp/htdocs/favicon.ico

[Thu Nov 04 12:31:03 2010] [error] [client ::1] File does not exist: C:/Program Files/xampp/htdocs/favicon.ico

[Thu Nov 04 12:33:56 2010] [error] [client ::1] File does not exist: C:/Program Files/xampp/htdocs/wosz_zend/prova

[Thu Nov 04 14:17:19 2010] [error] [client ::1] File does not exist: C:/Program Files/xampp/htdocs/favicon.ico

[Thu Nov 04 15:49:18 2010] [error] [client ::1] File does not exist: C:/Program Files/xampp/htdocs/wosz_zend/html656

Ma adesso ho un altro problema,mi stà venendo sempre più la conferma che il controler non funzioni affatto..

cmq il nuovo problema è questo (forse ti aiuta a capire cosa non và nel complesso):

ho aggiunto nel set_include_path le classi models in questo modo:

set_include_path(get_include_path().PATH_SEPARATOR.'library/Zend'.PATH_SEPARATOR.'.\models');

come ho trovato sulla guida nella sessione apposita di phpnews

ma quando in un'action del controller richiamo la classe news() contenuta nel file news.php della cartella models,mi dà quest'errore:

not found in C:\Program Files\xampp\htdocs\wosz_zend\application\controllers\ProvaController.php on line 4

ho provato sempre in questo index a richiamarla in vari modi sia con include che require_once ma non la mai trova,anche cambiando il path,niente...

Mi sà che è troppo ostico per me zend framework...

risposto 6 anni fa
superson_16
X 0 X

Si, temo che il problema possa essere legato non alle viste ma al funzionamento generale del framework.

Dovresti iniziare a capire se almeno l'IndexController funziona. Nella IndexAction metti semplicemente:

die("funziona");

Col browser richiama l'URL principale del sito e verifica se la scritta "funziona" viene visualizzata.

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

Ciao gianni, la scritta mi esce, qual'è il prossimo steep?

risposto 6 anni fa
superson_16
X 0 X

Il prossimo passo è verificare il funzionamento degli script di view. Sposta quell'istruzione nello script di view realtivo all'indexAction dell'indexController.

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

funziona anche li.. steep 3?  ::)

risposto 6 anni fa
superson_16
X 0 X

assegnazione di una variabile allo script di view proveniente dal controller:

nella action del controller:

$this->view->messaggio = 'ciao';

nello script di view:

<?php echo $this->messaggio;?>

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

Graaaaazie..Questo prima non lo faceva ma ora lo fà,quindi l'oggetto view riconosce le variabili del controller come sue...

adesso vorrei provare ad includere il file contenente la classe prova.php che mi serve in models:

Se nell'index_Controller metto questo:

[CODE PHP]

class ProvaController extends Zend_Controller_Action {

    public function indexAction(){

        $news = new prova();         //classe prova contenuta in /models/prova.php

        $news->getAllNews();       //metodo della classe prova

        $this->view->contenuto = $news;   // invio a rispettiva vista views/scripts/prova/index.phtml

   }

}

e

il path model l'ho incluso nel index.php in questo modo:

set_include_path(get_include_path().PATH_SEPARATOR.'library/Zend'.PATH_SEPARATOR.'.\models');

[END CODE PHP]

Mi dà quest'errore:

Fatal error: Class 'prova' not found in C:\Program Files\xampp\htdocs\wosz_zend\application\controllers\ProvaController.php on line 5

come mai? grazie mille almeno una cosa la sono riuscita a completare..

  O0

risposto 6 anni fa
superson_16
X 0 X

La cartella "models" è all'interno della cartella "application". In tal caso prova a rinominare la classe prova in Application_Model_Prova e a rinominare il file che la contiene in Prova.php

infine dal set_include_path() togli la cartella models

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X

Ciao,non ne vuole sapere: ho questa configurazione adesso così ti è più chiara:

-radice sito

   -application

            -controllers

        -models

       -views

   -html(cartella con .htaccess e file index.php)

   -library(zfm files)

nealla models ho il file Prova.php, che contiene la classe Application_Model_prova con i metodi che mi servono e che chiamo dal controller ProvaController in questo modo:

        $news = new Application_Model_Prova();

        $news->getAllNews();

L'errore è sempre lo stesso:

Fatal error: Class 'Application_Model_Prova' not found

in C:\Program Files\xampp\htdocs\wosz_zend\application\controllers\ProvaController.php on line 5

nell'index come set_include_path ho questa riga:

   set_include_path(get_include_path().PATH_SEPARATOR.'library/Zend');

che ne pensi?

risposto 6 anni fa
superson_16
X 0 X

e la cosa più curiosa è che se metto nel file.index.php(bootstrap) questo:

include(models/modelnews.php)

o qualunque altro tipo di path,ad esempio pure quello assoluto mi dà sempre errore:

Warning: include(models/modelnews.php) [function.include]: failed to open stream: No such file or directory in C:\Program Files\xampp\htdocs\wosz_zend\html\index.php on line 6

Warning: include() [function.include]: Failed opening 'models/modelnews.php' for inclusion (include_path='.;C:\Program Files\xampp\php\PEAR;library/Zend') in C:\Program Files\xampp\htdocs\wosz_zend\html\index.php on line 6

e come puoi notare l'ho rinominata di nuovo ma niente..e come se non  vedesse la cartella models

risposto 6 anni fa
superson_16
X 0 X

ho riprovato questo:

require_once('../application/models');

e mi dà quest'errore:

Warning: require_once(C:\Program Files\xampp\htdocs\wosz_zend\application\models) [function.require-once]: failed to open stream: Permission denied in C:\Program Files\xampp\htdocs\wosz_zend\html\index.php on line 6

Fatal error: require_once() [function.require]: Failed opening required '../application/models' (include_path='.;C:\Program Files\xampp\php\PEAR;library/Zend') in C:\Program Files\xampp\htdocs\wosz_zend\html\index.php on line 6

permesso negato..

risposto 6 anni fa
superson_16
X 0 X

riprova con le indicazioni che ti ho dato e senza inserire istruzioni di tipo require o include

 :bye:

P.S.: ma stai usando Zend_Application?

risposto 6 anni fa
Gianni Tomasicchio
modificato 6 anni fa
X 0 X

Ciao, sì stò usando un'applicazione zend, la versione del pacchetto scaricato non me la ricordo,ne ho provate più di una, se c'è un modo per saperla te ne sarei grato..

cmq con il require_once funziona e mi trova laclasse cercata,l'ha appena fatto..

per il set_include_path non sapendo dove sbattere la testa ne usate di vario tipo:

[CODE PHP]

 set_include_path(get_include_path().PATH_SEPARATOR.'library/Zend');

 set_include_path(get_include_path().PATH_SEPARATOR.'library/Zend'.PATH_SEPARATOR.'.\models');

 set_include_path(get_include_path().PATH_SEPARATOR.'library/Zend'.PATH_SEPARATOR.'../application/models');

   set_include_path(get_include_path().PATH_SEPARATOR.'library/Zend'.PATH_SEPARATOR.'.\application/models');

[END CODE PHP]

Ma niente mi dice sempre classe modelnews non trovata..

l'unica che funziona è:

[CODE PHP]

require_once('../application/models/modelnews.php');

[END CODE PHP]

risposto 6 anni fa
superson_16
X 0 X

Ciao Gianni non ti è venuto in mente nulla che può farmi andare la cosa? Per adesso mi stò arrangiando includendo in modo dinamico tutti i file contenuti nella cartella models

Inoltre sempre da principiante non riesco a capire questa cosa:

ho nella cartella P_Class, una classe Db_Table (questa cartella P_Class la includo sempre nel modo in cui includo la cartella models,visto che non sò come farle vedere nell'applicazione), nella stessa cartella P_Class ho un altro file con una classe chiamata Table_Info, che estende la classe Db_Table, il programma  con cui lavoro dopo il "extends" mi da il nome della Db_Table,quindi la vede, se avvio l'applicazione mi esce l'errore:

[CODE PHP]

Class 'Db_Table' not found in C:\Program Files\xampp\htdocs\wosz_zend\P_Class\Table_Info.php on line 5

(dove stò dichiarando la nouva classe Table_Info estesa)

[END CODE PHP]

 Secondo te i 2 problemi sono correlati?

Fammi sapere

grazie saluti

risposto 6 anni fa
superson_16
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda