Symfony 2 wypisanie danych z entity do base.html.twig

0

WItam,

zrobiłem tabele SEO.php wypisałem sb to w adminie wszystko jest okej, tylko mam problem żeby dodać to do base.html.twig

Chodzi o to że na każdej stronie jest taki sam kod google analistic i kilka innych i chcę po prostu żeby one były dodawane z poziomu CMS

Pozdrawiam!

1
  1. Tabela seo.php powiadasz? w bazie masz taką tabelę? Czy może masz encję Seo (o ile korzystasz z natywnego doctrine'a)?

  2. A gdzie pytanie?

  3. Pokaż kod

  4. Odnośnie przedostatniego zdania - chcesz żeby w Twoim CMS'ie opartym na SF2 - była możliwość dodania jednego kodu GA do każdej strony tak?
    4a. Nie wiem co tam w bazie Ci siedzi i gdzie trzymasz dane konfiguracyjne, ale skoro użytkownicy (admini) będą mogli edytować kod GA - to zrób jedną tabelę np : app_configuration i tam trzymaj ustawienia w postaci ID | klucz | wartość. Możesz to też trzymać w plikach (xml, json, cokolwiek).

Dopisałbym w sumie więcej - ale Twój problem jest opisany zbyt lakonicznie. Masz problem z przekazaniem jakiejś zmiennej do widoku?

0

Masz racje napisałem to jak jakiś jełop ;p

Mam encje SEO, tak korzystam z natywnego doctrine.
Mam problem żeby wypisać te dane z CMS opartego na SYMFONY 2 https://gyazo.com/d2036fde6bc7b1467b389a25e7215947
w widoku base.html.twig żeby było to na każdej podstronie.

<?php

namespace App\LpBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 *SEO
 *
 * @ORM\Table(name="SEO")
 * @ORM\Entity(repositoryClass="App\LpBundle\Repository\SEOPageRepository")
 * @ORM\HasLifecycleCallbacks()
 */
class SEO
{
	/**
	 * @var int
	 * @ORM\Column(name="id", type="integer")
	 * @ORM\Id
	 * @ORM\GeneratedValue(strategy="AUTO")
	 */
	private $id;
	
	/**
	 * @var string
	 * @ORM\Column(type="text", nullable=true)
	 */
	protected $htmlTracking;
	
	
	/**
	 * @var string
	 * @ORM\Column(type="text", nullable=true)
	 */
	protected $htmlGoogle;


	
	/**
	 * Set htmlTracking
	 *
	 * @param string $htmlTracking
	 *
	 * @return LandingPage
	 */
	public function setHtmlTracking($htmlTracking)
	{
		$this->htmlTracking = $htmlTracking;
		
		return $this;
	}
	
	/**
	 * Get htmlTracking
	 *
	 * @return string
	 */
	public function getHtmlTracking()
	{
		return $this->htmlTracking;
	}
	
	/**
	 * Set htmlGoogle
	 *
	 * @param string $htmlGoogle
	 *
	 * @return LandingPage
	 */
	public function setHtmlGoogle($htmlGoogle)
	{
		$this->htmlGoogle = $htmlGoogle;
		
		return $this;
	}
	
	/**
	 * Get htmlGoogle
	 *
	 * @return string
	 */
	public function getHtmlGoogle()
	{
		return $this->htmlGoogle;
	}
}

0
  1. Tworzysz service, który pobiera dane z pliku/bazy/kosmosu :)
  2. W configu (config.yml) dodajesz globalną zmienną np tak (cała sekcja twiga)
twig:
    debug: '%kernel.debug%'
    strict_variables: '%kernel.debug%'
    globals:
        viewVisibleVarName: '@yourBundle.serviceName'

W głównym widoku posługujesz się ową zmienną i możesz korzystać z metod z tego service'u.

Przetestowałem to, a uprzednio sam znalazłem w oficjalnej dokumentacji jak to zrobić
http://symfony.com/doc/2.8/service_container.html
https://symfony.com/doc/2.8/templating/global_variables.html

Czytaj tę dokumentację częściej i częściej zakładaj google

0

Dzieki za pomoc prawie się udało ale chyba coś źle robie...

Zmienna globalna twig działa :)
Stworzyłem też Service i raczej z nim jest coś nie tak, jak wypisuje to co chcę na stronie {{ viewVisibleVarName.site.htmlBody }}
To jest błąd

Neither the property "site" nor one of the methods "site()", "getsite()"/"issite()" or "__call()" exist and have public access in class "App\LpBundle\Service\SeoInformation".

<?php
namespace App\LpBundle\Service;

use App\LpBundle\Entity\SEO;

class SeoInformation
{
	public function getGoogle()
	{

		$site=$this->getDoctrine()->getRepository('AppLpBundle:SEO')->findOneBy(array('id'=>1));


		return array(
				'site'=>$site
		);
	}
}
1

Powinieneś użyć jeszcze nazwy metody service'u - viewVisibleVarName.getGoogle.site.htmlBody - coś w tym stylu. Aaaa i czytaj dokładnie komunikaty błędów - ten przecież podał Ci na tacy co jest nie tak :/

0

Dzięki ;) wiem wiem muszę nauczyć się czytać te błędy i je rozwiązywać...

Jesteś wielki :)

Ps. dopiero się uczę ;p

1 użytkowników online, w tym zalogowanych: 0, gości: 1