[ROZŠÍŘENÍ] Díl 3.: Vlastní stránka

Odpovědět
Uživatelský avatar
Otakar Pěnkava
Administrátor
Administrátor
Příspěvky: 581
Registrován: sob 25. říj 2008 16:17:14
Kontaktovat uživatele:

[ROZŠÍŘENÍ] Díl 3.: Vlastní stránka

Příspěvek od Otakar Pěnkava » úte 06. úno 2018 13:24:37

Ahoj uživatelé,
v minulém díle jsme si ukázali jak vytvořit šablony a eventy. To první ale pro naše účely zůstávalo nevyužité (naco tvořit šablonu, když nešla zobrazit), nyní tomu dáme smysl a ukážeme si jak to celé propojit. Dnešní díl bude o nastavení vlastní stránky, kdy si vytvoříme podstránku /auctions, kde budeme v budoucnu vypisovat seznam aukcí.

Najedeme si do složky našeho rozšíření (v mém případě ext/webdeal/auctions) a vytvoříme složky config a controller.

Config
Složka config se bude skládat ze 2 souborů:
  • services.yml - slouží k nastavení proměnných a funkcí, ke kterým má mít stránka přístup
  • routing.yml - slouží pro tvorbu adresy podstránky
services.yml

Kód: Vybrat vše

services:
    webdeal.auctions.controller:
        class: webdeal\auctions\controller\auctions
        arguments:
            - '@config'
            - '@dbal.conn'
            - '@controller.helper'
            - '@request'
            - '@template'
            - '@user'
            - '%core.root_path%'
Pokud jste použili jiné jméno rozšíření, je potřeba změnit 2 a 3 řádek, kde webdeal nahradíte složkou, kterou máte v ext/, a auctions složkou, kterou máte v ext/vašerozšíření.

V rychlosti si to vysvětlíme. Tento soubor říká phpBB, že k souboru, který si umístíte do složky ext/webdeal/auctions/controller/auctions.php má umožnit přístup proměnným $config, $db, $request a dalším. Samozřejmě nemusí být nutné všechny, ale tyto se téměř vždy hodí.

routing.yml

Kód: Vybrat vše

webdeal_auctions_controller:
    path: /auctions
    defaults: { _controller: webdeal.auctions.controller:handle}
V rychlosti: tento soubor phpBB říká, že pokud uživatel zadá adresu www.vaseforum.cz/auctions; pak má vykreslit vše co je v controlleru ve funkci handle(). Pokud používáte jiný název rozšíření, nezapomeňte příslušně změnit názvy.

Controller
Nyní vytvoříme ve složce controller soubor auctions.php a vložíme do něj následující obsah:

Kód: Vybrat vše

<?php
/**
*
* @package phpBB Extension - WebDeal s.r.o.
* @copyright (c) 2016-2018 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

namespace webdeal\auctions\controller;

class auctions
{
	/* @var \phpbb\config\config */
	protected $config;
	/* @var \phpbb\controller\helper */
	protected $helper;
	/* @var \phpbb\template\template */
	protected $template;
	/* @var \phpbb\user */
	protected $user;
	protected $request;
	protected $root_path;

	/**
	* Constructor
	*
	* @param \phpbb\config\config		$config
	* @param \phpbb\controller\helper	$helper
	* @param \phpbb\template\template	$template
	* @param \phpbb\user				$user
	*/

	public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\controller\helper $helper, \phpbb\request\request $request, \phpbb\template\template $template, \phpbb\user $user, $root_path)
	{
		global $table_prefix;

		$this->config = $config;
		$this->db = $db;
		$this->helper = $helper;
		$this->request = $request;
		$this->template = $template;
		$this->user = $user;
		$this->root_path = $root_path;
	}

	public function handle() {
		return $this->helper->render('auctions_body.html', 'Seznam aukcí');
	}
}
Pokud jste postupovali správně, pak po zadání adresy www.vaseforum.cz/auctions uvidíte obsah, který jste si vložili do ext/webdeal/auctions/styles/all/template/auctions.html (nezapomeňte promazat cache).

Nyní už s pomocí tohoto a 2 předchozích dílů umíte vytvořit vlastní stránku. Přidat další stránku už bude hračka, ale o tom až příště.

Na závěr přidávám zdrojové kódy ve stavu v jakém jsou na konci tohoto dílu.
Přílohy
dil_3.zip
(4.23 KiB) Staženo 219 x
Starám se o projekt phpBB.cz od doby, kdy jsem jej zachránil před zaniknutím. Pomůžete mi a dostaneme jej zase nahoru?
Přes soukromé zprávy neposkytuji podporu. Napište do fóra, kde vyřešení problému může pomoci ostatním.

Odpovědět