ora ne sparo un altra…quando uno clicca su “STAMPA” al posto di fare il redirect posso rimanere sempre nella stessa action e fargli generare li l’ output del PDF? Cosi posso accedere agli array? Mo je do foco al pc
Scusa ho letto adesso…ti spiego il tutto. Io ho una action Intestatrio fattura dove ho un form nel quale l’ utente inserisce l’ intestario della fattura…il form poi prosegue e viene validato da un altro model (RiepilogoFattura".
Quindi questi input sono dati da una query dove richiamo i prodotti scelti e lascio due inputfield liberi nel quale uno puo cambiare l’ iva e inserire l’ imponibile.
Quindi a questo punto la fattura sarebbe pronta per la stampa. Al click sul pulsante stampa vorrei stampare la fattu…che ora ho provato a generare appunto con il redirect all’ action “STAMPA FATTURA”.
Ora se è possibile posso generare l’ output del PDF senza usare un redirect ma facendo si che se per post arriva “stampa_fattura” (nome del pulsante) mi generi l’ output per il pdf recuperando i dati come mi hai spiegato?
Ok se posso…mi spieghi perfavore al posto di usare il
$this->redirect..........
cosa dovrei mettere li?
Questo e ciò che mi genera il pdf:
.....................................altro codice
//////PREPARO IL PDF DA GENERARE E SALVARE NEL DATABASE
$num_fattura = $_GET['nuovo_id'];
$this->layout="//layout/pdf-fattura";
$mPDF1 = Yii::app()->ePdf->mpdf();
$mPDF1->WriteHTML($this->render('frontend/stampa_fattura',array(
'prodotto'=>$prodotto, 'intestatario'=>$intestatario, 'indirizzo'=>$indirizzo, 'indirizzo2'=>$indirizzo2,
'cf_pi'=>$cf_pi,'nuovo_id'=>$nuovo_id, 'num_fattura'=>$num_fattura, 'nome_ditta'=>$nome_ditta,
'ind_ditta'=>$ind_ditta, 'piva_ditta'=>$piva_ditta, 'cf_ditta'=>$cf_ditta, 'tel_ditta'=>$tel_ditta,
'email_ditta'=>$email_ditta),true));
//////ASSEGNO IL NOME ALLA DIRECTORY DI SALVATAGGIO DELLE FATTURE PER OGNI FILIALE
$path = Yii::getPathOfAlias('webroot').'/fatture-filiali/'.$id_filiale.'/';
/////SE NON ESISTE LA CREO
if(!is_dir($path))
{
mkdir($path, 0, true);
chmod($path, 0775);
}
///////DATA E NOME FATTURA
$data_fatt = date('Y-m-d');
$nome_fatt = 'Fattura-'.$num_fattura.'-'.$data_fatt.'.pdf';
///////CREO IL LINK IN MANIERA TALE CHE SI POSSA SEMPRE RISTAMPARE E O CONTROLLARE LA FATTURA
$create_link = Yii::app()->createAbsoluteUrl('').'/fatture-filiali/'.$id_filiale.'/'.$nome_fatt;
//////FACCIO L' UPDATE DELLA TABELLA FATTURE E AGGIUNGO IL LINK AL FILE PER LA VISTA
$aggiungi_link = "UPDATE fatture_filiali SET link = '$create_link' WHERE id_filiale = '$id_filiale' AND num_fatt = '$num_fattura'";
$update_della_tabella = Yii::app()->db->createCommand($aggiungi_link);
$update_della_tabella->execute();
/////////SALVO IL FILE NELLA DIRECTORY
$salva_file = $path.'/'.$nome_fatt;
$mPDF1->Output($salva_file, 'F');
////GENERO IL PDF DA STAMPARE
$mPDF1->Output($nome_fatt, EYiiPdf::OUTPUT_TO_DOWNLOAD);
..................
Scusami prodotto fa parte di una vecchia prova dove gli spingevo l’ array alla vista…pero non modificava nulla prima della stampa.
E’ una vechia action di prova nella quale gli recuperava i record dal database e gli stampava la fattura senza permettergli modifiche. proveniva da qui:
/////////RICERCO LE MISSIVE PASSATE PER LA FATTURA E RECUPERO I LORO DATI
$ricerca = Missiva::model()->findAllByAttributes(array('missiva_id'=>$_GET['id_miss']));
$conta = count($ricerca);
if($conta > 0){
$prodotto = array();
foreach($ricerca as $risultati)
array_push($prodotto,$risultati->missiva_id);
}
Quindi per quello che vorrei fare adesso non c’ entra nulla perche la fattura deve essere generata da cio che arriva per $_POST.
Benissimo. Puoi per fare una prova direttamente utilizzare i campi del $_POST nella view.
Ricordati però che i form autogenerati (ActiveForm) hanno come "action" la stessa azione che li ha generati.
Quindi se l’action che ha generato il form si chiama “generaForm”, la proprietà action di <form> punterà all’url dell’action “generaForm”.
Tu devi modificare questo valore per impostarlo ad esempio su “generaPdf”, cambiando la proprietà action dell’oggetto del form istanziato da ActiveForm.
ok ci provo…altra domanda…tramite i primi campi del form, quelli per l’ intestazione della fattura devono comunque popolarmi una tabella dei clienti. Quindi in questo caso il form è formato da due model
Fatture Filiali e RiepiloFattura. Facendo come dici tu nel codice del form:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'fatture-filiali-form',
// Please note: When you enable ajax validation, make sure the corresponding
// controller action is handling ajax validation correctly.
// There is a call to performAjaxValidation() commented in generated controller code.
// See class documentation of CActiveForm for details on this.
'enableAjaxValidation'=>false,
)); ?>
quindi dovrei aggiungere:
'action'=>Yii::app()->createUrl('/CONTROLLER/AZIONE DI STAMPA PDF'),
giusto? e in questo modo lo faccio puntare direttamente alla action che genera il pdf?