Merci bcq mimi,
donc voila je t'explique ce que j'ai fait, je sais que j'ai commis une erreur quelque part mais je sais pas ou.
voila mon fichier indexSuccess.php
Code :
<?php use_stylesheet('biens.css') ?>
<?php //echo($transaction->getName()) ?>
<div id="search">
<?php include_partial('bien/filter', array('filter' => $filter))
?>
<?php //include_component('recherche', 'search') ?>
</div>
<div id="biens">
<div> </div>
<div> </div>
<div> </div>
<?php foreach ($transactions as $transaction): ?>
<div class="<?php echo $transaction ?>">
<div class="transaction">
<div class="feed">
<a href="<?php echo url_for('transaction', array('sf_subject' => $transaction, 'sf_format' => 'atom')) ?>">Flux</a>
</div>
<?php echo link_to($transaction, 'transaction', $transaction) ?>
</div>
<?php include_partial('bien/list', array('biens' => $transaction->getActiveBiens(sfConfig::get('app_max_biens_on_homepage'), sfOutputEscaper::unescape($query)))) ?>
<?php if (($count = $transaction->countActiveBiens() - sfConfig::get('app_max_biens_on_homepage')) > 0): ?>
<div class="more_biens">
et <?php echo link_to($count, 'transaction', $transaction) ?>
plus...
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
<div class="vide"> </div>
<div class="vide"> </div>
</div>
<div style="clear:both"></div>
et puis j'ai crée le partial filter
Code :
<?php use_javascripts_for_form($filter) ?>
<?php use_javascripts_for_form($filter) ?>
<?php if ($filter->hasGlobalErrors()): ?>
<?php echo $filter->renderGlobalErrors() ?>
<?php endif; ?>
<form class="lien_ajax" action="<?php echo url_for('bien/filter') ?>" method="post">
<?php echo $filter->render() ?>
<?php echo $filter->renderHiddenFields() ?>
<input type="submit" value="Filter" />
<a class="lien_ajax" href="<?php echo url_for('bien/filter?_reset=1') ?>">Reset</a>
</form>
et finalement le fichier actions.class.php
Code :
public function executeIndex(sfWebRequest $request) {
$this->filter = new BienFormFilter ( $this->getFilter () );
$this->transactions = Doctrine_Core::getTable ( 'Transaction' )->getWithBiens ();
if ($request->isMethod ( 'get' )) {
$this->filter->bind ( $request->getParameter ( $this->filter->getName () ) );
}
$this->query = $this->filter->buildQuery ( $this->filter->getValues () );
}
public function executeFilter(sfWebRequest $request) {
if ($request->hasParameter ( '_reset' )) {
$this->setFilter ( array () );
$this->forward ( 'bien', 'index' );
}
$this->filter = new BienFormFilter ( $this->getFilter () );
$this->filter->bind ( $request->getParameter ( $this->filter->getName () ) );
if ($this->filter->isValid ()) {
$this->setFilter ( $this->filter->getValues () );
$this->forward ( 'bien', 'index' );
}
$this->setTemplate ( 'index' );
}
protected function getFilter() {
return $this->getUser ()->getAttribute ( 'bien.filter', array () );
}
protected function setFilter(array $filter) {
return $this->getUser ()->setAttribute ( 'bien.filter', $filter );
}
protected function buildQuery($q) {
if (! isset ( $this->filter ))
$this->filter = $this->getFilter ();
$this->filter->setQuery ( $q );
$query = $this->filter->buildQuery ( $this->getFilter () );
return $query->execute ();
}
c'est tous ce que j'ai fait mais ca filtre pas.
J'ai essayé d'enlever le retour du filtre dans index mais il m'affiche l'erreur que $filter dans le fichier indexSuccess n'est pas definie dc j'étais obligé de laisser la classe comme telle.
dans l'objet user je vois les données du filtre exemple:
SELECT COUNT(*) AS num_results FROM transaction t WHERE t.id = '1'
SELECT COUNT(*) AS num_results FROM etat e WHERE e.id = '1'
SELECT COUNT(*) AS num_results FROM type t WHERE t.id = '3'
SELECT COUNT(*) AS num_results FROM user u WHERE u.id = '1'
SELECT b.id AS b__id, b.transactions_id AS b__transactions_id, b.etats_id AS b__etats_id, b.types_id AS b__types_id, b.users_id AS b__users_id, b.date_construction AS b__date_construction, b.nbr_piece AS b__nbr_piece, b.surface AS b__surface, b.prix AS b__prix, b.code_postal AS b__code_postal, b.adresse AS b__adresse, b.ville AS b__ville, b.pays AS b__pays, b.disponible_le AS b__disponible_le, b.description AS b__description, b.is_activated AS b__is_activated, b.expires_at AS b__expires_at, b.created_at AS b__created_at, b.updated_at AS b__updated_at FROM bien b
j'ai fais le filtre sur transactions_id=1 etats_id=1, types_id=3 et users_id=1
Merci bcq
Partager