рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд░рд┐рдЪрд┐рддреЛрдВ рдХреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рддреБрд░рдВрдд рд╕рд╡рд╛рд▓ рдЖрдпрд╛ - рдХреИрд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдкрд░рд┐рд╡рд░реНрддрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЛрд╣рдирд╛ 3 рдореЗрдВ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЕрдиреНрдп рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрдирдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рд╕рддрд╣реА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ), рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА рджреГрд╢реНрдп рдлрд╝рд╛рдЗрд▓реЗрдВ рджреГрд╢реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ (рдЖрдЦрд┐рд░рдХрд╛рд░, рдЯреЗрдореНрдкрд▓реЗрдЯ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ), рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ, рджреГрд╢реНрдп рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рджреГрд╢реНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИ (рдЗрд╕реЗ рд╕реАрдзреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рдХрд░)ред рдЦреИрд░ - рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 3.0.7 рд╣реИ, рдЬреЛ рдЗрд╕ рд╕рдордп рдирд╡реАрдирддрдо рд╣реИред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Kohana_View рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦреЗрдВ, рдЬрд┐рд╕реЗ рд╡реНрдпреВ рдбрдореА рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд╡рд░реНрдЧ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди set_filename () рдлрд╝рдВрдХреНрд╢рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ - рдпрд╣ рдЗрд╕рдореЗрдВ рд╣реИ рдХрд┐ рдпрд╣ "рд╣рд╛рд░реНрдб" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рдЬрд╣рд╛рдВ рджреЗрдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП:
public function set_filename($file)
{
if (($path = Kohana::find_file('views', $file)) === FALSE)
{
throw new Kohana_View_Exception('The requested view :file could not be found', array(
':file' => $file,
));
}
// Store the file path locally
$this->_file = $path;
return $this;
}
рдЪрд▓рд┐рдП рдЕрдм Kohana_View рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдХреЗ рд╣рдорд╛рд░рд╛ рдЦрд╛рдХрд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ set_filename рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рддреЗ рд╣реИрдВ:
public function set_filename($file)
{
$folder = 'templates/'.self::get_name();
if (($path = Kohana::find_file($folder, $file)) === FALSE)
{
throw new Kohana_View_Exception('The requested layer :file could not be found', array(
':file' => $file,
));
}
// Store the file path locally
$this->_file = $path;
return $this;
}
рдПрдХ рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдкреАрд▓ рдЬреЛ рдореВрд▓ рд╡рд░реНрдЧ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ - рд╕реНрд╡рдпрдВ :: get_name () - рдпрд╣рд╛рдВ рдлреНрд▓реИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдЗрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдпрд╣рд╛рдВ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ) рд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдирд╛рдоред
public static function get_name()
{
$template = DB::select('value')
->from('config')
->where('key', '=', 'template')
->limit(1)
->execute()
->current();
return $template['value'];
}
рдЕрдм, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ :: get_name () рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдХреЗ рд╡рд░реНрддрдорд╛рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдирд╛рдо рдкрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдирд╛рдо рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдЪрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрднреА-рдХрднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рд╡рд┐рдХреГрдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рд╣реИ)ред
рд╕реВрдЪреА рдХреЗ рдиреАрдЪреЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИ - рдХреЛрдИ рддрд╛рдордЭрд╛рдо рдирд╣реАрдВ:
public static function factory($file = NULL, array $data = NULL)
{
return new Template($file, $data);
}
рд╡рд╣ рд╕рдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреНрд▓рд╛рд╕реЗрд╕ / рдЯреЗрдореНрдкрд▓реЗрдЯ.php рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдкрдирд╛ рдирд┐рдпрдВрддреНрд░рдХ_Template рд▓рд┐рдЦрдирд╛
рдЕрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд Kohana_Controller_Template рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд▓рд┐рдЦреЗрдВред
class Controller_Template extends Controller{
/**
* @var string template layer
*/
public $layer = 'index';
/**
* @var boolean auto renders template
*/
public $auto_render = TRUE;
/**
* Loads the template object (Template instance)
*/
public function before()
{
if($this->auto_render === TRUE)
{
$this->template = Template::factory($this->layer);
return parent::before();
}
/**
* Assigns the template as the request response.
*/
public function after()
{
if($this->auto_render === TRUE)
{
$this->request->response = $this->template;
}
return parent::after();
}
}
рдЕрдм, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЬрдм рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд┐рдпрдВрддреНрд░рдХ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдпрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ / [template_name] /auth.php рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рддреЛ рдЙрд╕реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ $ рдкрд░рдд = 'рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░';
рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред
рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдореЗрд░рд╛ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗред рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рд╕реНрд╡рд╕реНрде рдЖрд▓реЛрдЪрдирд╛, рдкреНрд░рд╢реНрди, рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреА ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдЙрдирдХреА рдЦрд╛рддрд┐рд░ рд▓рд┐рдЦрд╛ рдерд╛ред :)
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред