Как получить переменную PHP в Ireport

Я пытаюсь создать отчет о яшме в моем приложении php. Я работаю на Symfony2. На самом деле я создаю свой отчет в своем приложении, но проблема в Ireport, я не получил переменную php, которую я отправил из моего приложения php. И мой отчет находится в Jasperserver, когда я закончу модификацию отчета.

Это мое действие из моего приложения PHP:

public function result_recherche_googleAction(){

$em = $this->getDoctrine()->getManager ();

$request = $this->getRequest();
$id_pef = $request->request->get('id_pef');

if ($request->isXmlHttpRequest()) {$jasperclient=new JasperClient();
$lien=$jasperclient->getUrlManyParams($this->container,"RechercheGoogle",array("id_pef" => $id_pef));return $this->get('templating')->renderResponse('gideBundle:Edition:res_edition_recherche_google.html.twig',array(
//'trans'=>$pefs,
'lien'=>$lien,
));
//}
}
else {
//return $this->feuillePEFAction();
return new Response(json_encode($id_pef));
}
}

Это код из моего отчета:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RechercheGoogle" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="7e1de1d9-a08e-47ec-8af2-e93dbec288e7">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="id_pef" class="java.lang.Integer"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="270" splitType="Stretch">
<staticText>
<reportElement x="82" y="34" width="100" height="20" uuid="8969389a-851b-44e5-a88c-14a4b217fc47"/>
<text><![CDATA[Coucou !!!]]></text>
</staticText>
<staticText>
<reportElement x="252" y="21" width="240" height="58" uuid="1bebe360-cabf-485f-a158-befade8ee7a9"/>
<textElement>
<font size="14"/>
</textElement>
<text><![CDATA[ID du PEF:  $P{id_pef}]]></text>
</staticText>
<textField>
<reportElement x="322" y="125" width="100" height="20" uuid="eae36fce-573e-484c-8cca-e8b4007d5e2b"/>
<textFieldExpression><![CDATA[$P{id_pef}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="224" y="109" width="100" height="20" uuid="2e2db24f-899b-45d0-9434-62cdd0f35171"/>
<textFieldExpression><![CDATA[$P{id_pef}]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="125" splitType="Stretch"/>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch">
<textField>
<reportElement x="432" y="22" width="100" height="20" uuid="0d41b36b-f441-400c-af62-753fa3cb4b63"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>

Я надеюсь, что я чист. Я стараюсь все, и я ищу много, но любую информацию о моей проблеме. Я надеюсь, что кто-то может мне помочь, потому что это очень важно! Если вы хотите больше информации о моей проблеме, сообщите мне.

РЕДАКТИРОВАТЬ:

Это я положил в symfony parameter.yml, чтобы сделать ссылку на jasperserver:

jasper:
hostname: localhost
tcpport: '8080'
parentfolder: reports/nightly
username: username
userpass: mdp
specialparams: '_flowId=viewReportFlow&standAlone=true&_datasource=nightlydatasource'

С var_dump на моем php variablre «* lien» у меня есть этот URL:

string 'http://localhost:8080/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_datasource=nightlydatasource&ParentFolderUri=reports/nightly&j_username=username&j_password=mdp&reportUnit=%2freports/nightly%2fRechercheGoogle&id_pef=104039-01-01' (length=269)

И я называю отчет по моему мнению. Отчет вызывается правильно, но я не получил мою переменную php в отчете.

0

Решение

Вам требуется библиотека PHP (сторонняя), которая генерирует отчеты в формате PDF из данного документа jrxml. эту библиотеку можно скачать из следующего репозитория Git
https://github.com/chathurangat/PhpJasperLibrary

После того, как весь дизайн сделан, пришло время интегрироваться с вашим PHP-приложением. Обязательно загрузите и импортируйте PhpJasperLibrary в ваш PHP-скрипт. (Скопируйте файлы .jasper и .jrxml в один каталог и укажите ссылку в PHP-скрипте)

<?php

//Import the PhpJasperLibrary
include_once('PhpJasperLibrary/tcpdf/tcpdf.php');
include_once("PhpJasperLibrary/PHPJasperXML.inc.php");//database connection details

$server="192.168.0.11";
$db="lcs_ims";
$user="web";
$pass="abc123@#";
$version="0.8b";
$pgport=5432;
$pchartfolder="./class/pchart2";//display errors should be off in the php.ini file
ini_set('display_errors', 0);

//setting the path to the created jrxml file
$xml =  simplexml_load_file("report/chathuReport.jrxml");

$PHPJasperXML = new PHPJasperXML();
//$PHPJasperXML->debugsql=true;
//$PHPJasperXML->arrayParameter=array("parameter1"=>1);
$PHPJasperXML->xml_dismantle($xml);

$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db);
$PHPJasperXML->outpage("I");    //page output method I:standard output  D:Download file?>

Получите доступ к файлу report_view.php на вашем сервере LAMP / WAMP. вы получите отчет в формате PDF.

проверьте ссылку для более подробной информации

и если вы хотите получить динамическое значение, используйте функция sql.


Я хорошо генерирую свой документ, потому что в моем приложении я вызываю отчет Japer, и он отображается правильно, за исключением параметра.

В Symfony я добавил в parameter.yml, что позволяет мне подключаться к jasper следующим образом:

jasper:
hostname: localhost
tcpport: '8080'
parentfolder: reports/nightly
username: username
userpass: mdp
specialparams: '_flowId=viewReportFlow&standAlone=true&_datasource=nightlydatasource'

Tien У меня есть URL, который вы спросили меня. Я получил это, выполнив var_dump моей переменной ссылки из-за действия моего контроллера следующим образом:

$jasperclient=new JasperClient();
$lien=$jasperclient->getUrlManyParams($this->container,"RechercheGoogle",array("id_pef" => $id_pef));
var_dump($lien); exit;

Вот URL:

string 'http://localhost:8080/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_datasource=nightlydatasource&ParentFolderUri=reports/nightly&j_username=username&j_password=mdp&reportUnit=%2freports/nightly%2fRechercheGoogle&id_pef=104039-01-01' (length=269)

Я думаю, что это выполняется на сервере яшмы. Поскольку приложение используется под сервером wamp после управления отчетами, об этом заботится jasperserver. И я забыл, что это представление, где я публикую отчет:

<div>
<div class="rech_form" style="width: 664px; height:100px; " >
<input id="input_rech"style="text-transform:uppercase; width: 512px; float: left;  height: 32px; border-radius: 0; border: none;
background: url({{ asset('bundles/gide/images/input_rech.jpg') }}) ;
color: #92a4b0; font-family: 'Myriad Pro', Helvetica, Arial, sans-serif; font-size: 14px;"placeholder="Enter an EFP, TJ, Location ..." />

<input type="button" value="{{ 'Recherche' }}"   id="bt_recherche_google"  onclick='recherche_google("{{ugpef}}")' />
<!-- <button id="bt_rech">Research</button>-->
<br />
<div id="bloc_gauche" style="float:left;width:33%;">
<input type="checkbox" id="choix_armoire" class="k-checkbox" />
<label for="choix_armoire" class="k-checkbox-label"> Name Wardrobe </label>
<br /><br />
<input type="checkbox" id="choix_code_mire" class="k-checkbox" />
<label for="choix_code_mire" class="k-checkbox-label"> Code Mire </label>
</div>
<div id="bloc_milieu" style="float:left;width:33%;margin-left:auto;">
<input type="checkbox" id="choix_code_GMAO" class="k-checkbox" />
<label for="choix_code_gmao" class="k-checkbox-label"> Code GMAO </label>
<br /><br />
<input type="checkbox" id="choix_repere_depart" class="k-checkbox" />
<label for="choix_repere_depart" class="k-checkbox-label"> Repère de Départ </label>
</div>
<div id="bloc droit" style="float:left;width:33%;margin-left:auto;">
<input type="checkbox" id="choix_libelle_appareil" class="k-checkbox" />
<label for="choix_libelle_appareil" class="k-checkbox-label"> Device Label </label>
<br /><br />
<input type="checkbox" id="choix_observation" class="k-checkbox" />
<label for="choix_observation" class="k-checkbox-label"> Observation </label>
</div>

</div>
<!--<button class="buttonPro orange" id="bouton_close" onclick="closewindow();" type="button">Cancel</button>-->
<div id="rapport_recherche_google"> </div>
</div>
<script>
/*  var pef="{{ugpef}}";$( document ).ready(function() {$('#bt_recherche_google').click(function() {
alert(pef);
});
});*/
function recherche_google(id_pef){
alert(id_pef);

$.ajax({
type: 'POST',
url : "{{ path('result_recherche_google')}}",
dataType : 'text',
data : {
id_pef: id_pef // We give the typed string in the search field
},
success : function(data){ // We prepare to return the data received thanks to the event of success
console.log(data);
$('#rapport_recherche_google').html(data);
},
error : function(erreur){
alert("An error has occurred "+ erreur);
console.log(erreur);
}
});
}
</script>

Как вы могли заметить, я делаю ajax-вызов, который отправляет то, что я набрал, в мой ввод в моем действии (код указан в моем 1-м сообщении), и этот вызов включит это в div (это в j ‘Действительно отображает отчет о яшме) :

<div style="width:100%;height: 780px;position:relative">
<div id="hider" style="background: url('/web/bundles/gide/images/banner_bkgd.png') repeat-x scroll 0 0 #2881BB;;display:block;position:absolute;top:2px;left:0;height: 26px; width: 100%;z-index: 10;"></div>
<iframe name="zone" id="zone"  src="{{lien}}" style=" height: 700px;width: 100%;position:absolute;left:0;top:0;"></iframe >
</div>

Здесь я надеюсь дать правильную информацию, если не я.

0

Другие решения

В своем отчете на сервере JasperReports я просто добавил «элемент управления вводом» из iReport.

Смотри это вид с JR Server из iReport (вам нужно подключиться на JR Server в iReport):

Jasperserver вид из ireport

После поиска в отчете в этом представлении я добавляю и элемент управления вводом в каталог «Управление вводом», например:

Мой отчет с контролем ввода

Я просто щелкаю правой кнопкой мыши в каталоге «Управление вводом» и нажимаю «Создать локальный элемент управления вводом», и после того, как я называю свой элемент управления вводом как свой параметр из iReport, и он работает.

Теперь я могу отправить переменную php и получить эту переменную в своем отчете.

0

По вопросам рекламы [email protected]