Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

DataObjectManager Module /

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, Ed, biapar, Willr, Ingo, swaiba

pb with dataobjectmanager testimonial example


Go to End


39 Posts   5939 Views

Avatar
UncleCheese

Forum Moderator, 4102 Posts

24 June 2010 at 4:35am

Tu veux que le menu soit sur toutes les pages "Testimonial?"

Sur Testimonial_show.ss, rajouter:

<% control TestimonialPage %>
<% control Testimonials %>
<a href="$Link">Testimonial $ID</a>
<% end_control %>
<% end_control %>

En fait, il vaudrait la peine de mettre le contenu de "<% control Testimonials %> dans un "include" afin de ne pas te répéter sur les deux templates !

Avatar
servalman

Community Member, 211 Posts

24 June 2010 at 4:58am

c'est ca oncle fromage

en fait je n'est pas besoin d'une page supérieure affichant le menu mais juste que le menu soit présent sur chaque testimonial .
je veux que quand on clique sur 'les temoignages' on arrive directement sur testimonial 1 qui a dans sa page le menu de tout les testimonials (pareil avec testimonial 2 etc.)

Donc en fait j'essaie de n'avoir qu'une template Testimonial_show.ss qui inclus le menu général a chaque fois

est ce possible d'écrire cela :

<% control Testimonial %>
$Quote
<% end_control %>

<% control TestimonialPage %>
<% control Testimonials %>
<a href="$Link">Testimonial $ID</a>
<% end_control %>
<% end_control %>

Merci bcp grace à toi j'avance et je comprend mieux enfin je crois

Avatar
UncleCheese

Forum Moderator, 4102 Posts

24 June 2010 at 5:31am

TestimonialPage_Controller:

public function index() {
return Director::redirect($this->Testimonials()->First()->Link());
}

Avatar
servalman

Community Member, 211 Posts

24 June 2010 at 5:37am

merci oncle fromage

J'essaie cela demain car je dois partir et je te dis si j'ai réussis à faire fonctionner cela

merci encore pour tout

Avatar
servalman

Community Member, 211 Posts

24 June 2010 at 9:10pm

Edited: 24/06/2010 9:18pm

Bonjour Oncle Fromage !

Je viens d'essayer de réaliser ce dont nous avons parler hier en adaptant à mon cas mais sans succés, je ne doit pas être très doué
J'espère que tu pourra encore m'aider un peu car cela me bloque bcp ..

Je te remercie par avance encore et encore

voici ou j'en suis :

- Les données des Product s'affiche correctement dans la page Product
- Les flashvar fonctionnes
- Le menu Products ne s'affiche pas seul un lien s'affiche mais il ne dirige vers rien
- Je n'arrive pas a donner comme texte aux lienx du menu la valeur Productname : <a href="$Link">$Productname $ID</a> (rien ne s'affiche).

j'ai une page de redirection 'Products' qui renvoi sur la Page 01 donc le site tree ressemble à cela :

PRODUCTS (redirector page>Product 01)
-Product 01 (ProductPage)
-Product 02 (ProductPage)
-Product 03 (ProductPage)

et comme nous l'avions évoqué je voudrait que sur chaque page Product les choses s'affiche ainsi

-------------------- affichage Product X ------------------------

Product 01 - <b>Product 02</b> - Product 03
Productname 02
Contenance 02
Actifs 02
Prix 02
-------------------- affichage Product X ------------------------

voici les codes que j'ai fait

---------------------- Product.php ------------------------------

<?
class Product extends DataObject
{
	static $db = array (
		'Productname' => 'Text',
		'Imagename' => 'Text',
		'Presentation' => 'Text',
		'Contenance' => 'Text',
		'Actifs' => 'Text',
		'Price' => 'Text'
	);
 
	static $has_one = array (
		'ProductPage' => 'ProductPage'
	);
 
	public function getCMSFields_forPopup()
	{
		return new FieldSet(
			new TextField('Productname'),
			new TextField('Imagename'),
			new TextField('Presentation'),
			new TextField('Contenance'),
			new TextField('Actifs'),
			new TextField('Price')
			//new TextareaField('Quote')
			

		);
	}

	public function Link() {
return $this->ProductPage()->Link("show/$this->ID");
}
}

---------------------- ProductPage.php ------------------------------

<?
class ProductPage extends Page
{
	static $has_many = array (
		'Products' => 'Product'
	);
 
	public function getCMSFields()
	{
		$f = parent::getCMSFields();
		$f->addFieldToTab("Root.Content.Products", new DataObjectManager(
			$this,
			'Products',
			'Product',
			array('Productname'=>'Productname','Imagename'=>'Imagename','Presentation' => 'Presentation','Contenance' => 'Contenance','Actifs' => 'Actifs','Price' => 'Price'),
			'getCMSFields_forPopup'
		
		));
		
		return $f;
	}


 
}






	class ProductPage_Controller extends Page_Controller
{


public function index() {
return Director::redirect($this->Products()->First()->Link());
}


static $allowed_actions = array (
'show'
);
public function show() {
return array (
'Product' => DataObject::get_by_id("Product",$this->urlParams['ID'])
);
}

}

----------------- ProductPage.ss --------------

<!-- NAVIGATION PRODUCTS -->		
<div id="ProductNav">		 
<% control ProductPage %>
<% control Products %>
<a href="$Link">Contenance $ID</a>
<% end_control %>
<% end_control %> 
</div>
<!-- NAVIGATION PRODUCTS -->

<!-- FICHE PRODUCT -->
<div id="Product">		 
<% control Product %>
Vous avez séléctioné le Product ci-dessous:
$Productname </br>
$Contenance </br>
$Actifs </br>
$Prix </br>
<a href="$Product.Link">$Productname</a>
<% end_control %>
</div>
<!-- FICHE PRODUCT -->

<!-- ANIMATION FLASH -->
<div id="Animation">
<object width="450" height="600" type="application/x-shockwave-flash" data="assets/swf/raineditorial.swf">
<param name="movie" value="assets/swf/raineditorial.swf" />
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<!--<param name="flashvars" value=$flashvarFunction/>-->
<!-- ANIMATION FLASH -->

Avatar
UncleCheese

Forum Moderator, 4102 Posts

25 June 2010 at 2:04am

Le seul problème que je vois est que tu as un template "ProductPage.ss", mais ça ne semble pas être utilisé. Avec le rédirigement dans index(), tous les requêtes se terminent à ProductPage_show.ss.

Avatar
servalman

Community Member, 211 Posts

25 June 2010 at 2:28am

Edited: 25/06/2010 2:29am

Bonjour Oncle Brie

tout d'abord je veux te dire que les codes qui sont dans le post précedent sont les seuls que j'utilise tu as donc mon shémas complet

J'ai renomé ma template' ProductPage.ss' en 'ProductPage_show.ss.'

mais j'obtiens le même résultats :
pas de menu avec les différents products dans la page

les liens sont vides en regardant la source html :

<a href="">retour</a>

mon autre problème c'est de pouvoir introduire le $Productname dans ce menu des Products or si j'écris rien ne s'inscrit surement parce que le control <% control Product %> n'est pas inclus

<!-- NAVIGATION PRODUCTS -->      
<div id="ProductNav">      
<% control ProductPage %>
<% control Products %>
<a href="$Link"><b>$Productname</b> $ID</a>
<% end_control %>
<% end_control %>
</div>
<!-- NAVIGATION PRODUCTS --> 

Je sens bien que je suis proche de la solution je n'arrive pourtant pas à faire fonctionner correctement.

Je ne veux pas abuser de ton temps non plus

merci

T

Avatar
UncleCheese

Forum Moderator, 4102 Posts

25 June 2010 at 3:32am

Lorsqu'on crée un nouveau template, il faut faire un ?flush=1....L'as-tu fait?