Classe nel controller che non funziona

Ciao a tutti, sono nuovo del forum :)

Ho iniziato da pochissimissimo ad usare ZFW.

Mi era stata passato un libro e stavo seguendo paro paro gli esempi che faceva lui.

Ero riuscito a fare il classico Hello world, notando che l'esempio del libro non mi funzionava correttamente molto probabile per le varie differenze dei path.

Ora l'esempio che mi propone è interfacciarmi con le API di yahoo per ottenere le parole chiave di un contenuto testuale. Il fatto è che ho copiato tutto quello che mi diceva il libro ma se nell'indexController creo la funzione per le api di yahoo, finisce che tutto lo script non fa piu niente, nemmeno indexAction viene eseguita, e mi da sempre e solo pagina bianca.

Vi incollo qua sotto la index.php

<?php 
set_include_path('.'.PATH_SEPARATOR.'./library'.PATH_SEPARATOR.'./models/'.PATH_SEPARATOR.get_include_path());

require_once 'Zend/Loader.php';
require_once 'Zend/Controller/Front.php';

try
{
Zend_Loader::loadClass('Zend_Controller_Front');
$controller = Zend_Controller_Front::getInstance();

$controller->throwExceptions(true);
//$controller->setParam('noViewRendered', true);
$controller->setParam('noErrorHandler', true);
$controller->setControllerDirectory('./controllers');

$controller->dispatch();
}
catch(Exception $exp)
{
   $contentType = 'text/html';
   header("Content-Type: $contentType; charset=utf-8");
   echo 'an unexpected error occurred.';
   echo '<h2>Unexpected Exception: ' . $exp->getMessage() . '</h2><br /><pre>';
   echo $exp->getTraceAsString();
}

?>

Mentre qui c'è il contenuto di IndexController.php

<?php 
require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action
{
   public function indexAction()
   {
      $this->view->test = "ciao ciao mondo";
   }
   public function extractAction()
   {
      /*
      * get the URL passed in from the form
      */
      $url = Zend_Filter::get($this->getRequest()->getPost('url'), 'StripTags');
      /*
      * read page into memory
      * requires allow_url_fopen to be true
      */
      $page = file_get_contents($url)
      /*
      * strip out everything but the content
      */
      $matches = array();
      preg_match('/<body[^>]*>(.*?)<\/body\s*/isx', $page, $matches);
      $content = $matches[1];
      /*
      * Filter out the cruft
      */
      $content = preg_replace('/(<style[^>]*>[^>]*<\/style\s*>)/isx', '', $content);
      $content = preg_replace('/(<script[^>]*>[^>]*<\/script\s*>)/isx', '', $content);
      $content = preg_replace('/(&.*?;)/isx', '', $content);
      
      $content = Zend_Filter::get($content, 'StripTags');
      
      /*
      * send it off to Yahoo for analysis
      */
      $client = new Zend_Rest_client('http://search.yahooapis.com/ContentAnalysisServe/V1/termExtraction');
      $client->appid('StringaAlfaNumericaFornitaDaYahoo')
            ->context($content)
            ->output('xml');
      $result = $client->post();
      $client = null;
      /*
      * Hand everything off to the View for output
      */
      $this->view->url = $url;
      $this->view->result = $result->Result;
   }
}

Spero davvero possiate aiutarmi a capire perchè non funziona ed eventualmente a capirne le cause tramite ZFW...come risalire all'errore....

Grazie Mille

Ciauuuuu

inviato 6 anni fa
paulpetta
modificato 6 anni fa
X 0 X
e mi da sempre e solo pagina bianca.

Basterebbe leggere i log del php per capire dove stanno gli errori.

Un modo sarebbe quello di impostare l'applicazione di Zend non in produttività ma come debug o in sviluppo.

Ti faccio notare che hai un errore di sintassi in questa riga(l'ultima):

/*

* read page into memory

* requires allow_url_fopen to be true

*/

$page = file_get_contents($url)

Ti manca il ";" finale.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao

Intanto grazie per avermi risposto.

Ho messo il ; e ora almeno l'index funziona, ma se do invio per passare i dati al momento in cui va ad index/extract non fa niente.

Ora tu mi dici di mettere zend in modalità sviluppo e guardare il log di php.

Il log di php l'ho messo ad ON gli ho detto anke il file su cui scriverlo ma non fa niente.

Nel php.ini ho modificato queste direttive:

log_errors = On

error_log = "C:\xampp\apache\logs\php_error.log"

Solo che non mi crea il file del log e se lo creo io cmq non ci scrive niente.

Mi sapresti aiutare perfavore??

e per zend come lo imposto in debug o sviluppo??

Grazie mille

Ciau :bye:

risposto 6 anni fa
paulpetta
X 0 X

Ciao

Rieccomi

Non potendo modificare il messaggio precedente devo farne un altro.

Ok ho sistemato il log di php e la visualizzazione degli errori.

Quello che ottengo una volta mandata l'azione index/extract sono questi errori:

( ! ) Notice: Zend_Filter::get() is deprecated as of 1.9.0; please update your code to utilize Zend_Filter::filterStatic() in C:\htdocs2\dev\testlibro\library\Zend\Filter.php on line 144

Call Stack

#   Time   Memory   Function   Location

1   0.0007   327032   {main}( )   ..\index.php:0

2   0.0178   408160   Zend_Controller_Front->dispatch( )   ..\index.php:17

3   0.0599   572344   Zend_Controller_Dispatcher_Standard->dispatch( )   ..\Front.php:946

4   0.0860   676192   Zend_Controller_Action->dispatch( )   ..\Standard.php:289

5   0.0862   679512   IndexController->extractAction( )   ..\Action.php:513

6   0.0863   679632   Zend_Filter::get( )   ..\indexController.php:16

7   0.0863   680088   trigger_error ( )   ..\Filter.php:144

( ! ) Notice: Zend_Filter::get() is deprecated as of 1.9.0; please update your code to utilize Zend_Filter::filterStatic() in C:\htdocs2\dev\testlibro\library\Zend\Filter.php on line 144

Call Stack

#   Time   Memory   Function   Location

1   0.0007   327032   {main}( )   ..\index.php:0

2   0.0178   408160   Zend_Controller_Front->dispatch( )   ..\index.php:17

3   0.0599   572344   Zend_Controller_Dispatcher_Standard->dispatch( )   ..\Front.php:946

4   0.0860   676192   Zend_Controller_Action->dispatch( )   ..\Standard.php:289

5   0.0862   679512   IndexController->extractAction( )   ..\Action.php:513

6   2.7033   862328   Zend_Filter::get( )   ..\indexController.php:35

7   2.7034   862784   trigger_error ( )   ..\Filter.php:144

( ! ) Fatal error: Class 'Zend_Rest_client' not found in C:\htdocs2\dev\testlibro\controllers\indexController.php on line 40

Call Stack

#   Time   Memory   Function   Location

1   0.0007   327032   {main}( )   ..\index.php:0

2   0.0178   408160   Zend_Controller_Front->dispatch( )   ..\index.php:17

3   0.0599   572344   Zend_Controller_Dispatcher_Standard->dispatch( )   ..\Front.php:946

4   0.0860   676192   Zend_Controller_Action->dispatch( )   ..\Standard.php:289

5   0.0862   679512   IndexController->extractAction( )   ..\Action.php:513

Capisco che filter::get è una funzione non più disponibile suppongo.

e poi a qudno pare non trova la zend_rest_client...

giusto??

Come posso procedere??

Suggerimenti??

Grazie  :bye:

risposto 6 anni fa
paulpetta
X 0 X

 :D :D :D

Ops

Diciamo che la mia causa di problemi più grande era il fatto che 7zip non mi aveva estratto completamente ZFW ehehhehehe

ops

Poi mi dava un altro problema, ma riguardava a quanto pare l'indirizzo per la richiesta alle API...

Ho risolto con un bel var_dump un po di tutto...

hhehehehe

Grazie mille comunque e scusate la serie di post da monologo..

Ciauu  :bye: :bye:

risposto 6 anni fa
paulpetta
X 0 X

Ottimo per aver risolto il problema :)

Ti consiglio di dare un occhio anche alla documentazione ufficiale per aggiornarti sulla creazione delle applicazioni Zend Framework.

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Shi shi

Infatti per capire che cosa dovevo sostituire oltre al fatto che me lo suggeriva lui guardavo la documentazione ufficiale cosi capivo anche in che maniera più o meno funzionavano le cose :)

Grazie ancora e al prossimo problema haahhaha  :2funny:

 ;)

 :bye:

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