Подружить frontend.php и .tpl

#1 28 марта 2014 в 02:38
Подскажите, а то совсем запутался.Не получается вывести данные где надо.Как правильно прописать в frontend.php, что бы в com_view.tpl
своё выводилось, а в другом своё.У меня выводит или оба данных или ни одного.

  1. <?php
  2. /////////////////////////////////////////////////////////
  3. // Этот компонент сгенерирован автоматически //
  4. // генератор написал stroller7@gmail.com //
  5. /////////////////////////////////////////////////////////
  6.  
  7. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  8.  
  9. function testv(){
  10.  
  11. $inCore = cmsCore::getInstance();
  12. $inPage = cmsPage::getInstance();
  13. $inDB = cmsDatabase::getInstance();
  14. $inUser = cmsUser::getInstance();
  15.  
  16.  
  17. $model = new cms_model_testv();
  18.  
  19. global $_LANG;
  20.  
  21. $cfg = $inCore->loadComponentConfig('testv');
  22.  
  23.  
  24. $pagetitle = $inCore->getComponentTitle();
  25.  
  26.  
  27. $inPage->addPathway($pagetitle, '/testv');
  28. $inPage->setTitle($pagetitle);
  29. $inPage->setDescription($pagetitle);
  30.  
  31. // сюда помещаются остальные операторы компонента
  32. // правила написания компонента смотрите в документации
  33.  
  34. /************************************************/
  35. $do = $inCore->do;
  36. if ($do ='view'){
  37. $addfile = 'добавить файл';
  38.  
  39. cmsPage::initTemplate('components', 'com_testv_view')->
  40. assign('addfile', $addfile)->
  41. assign('cfg', $cfg)->
  42. display('com_testv_view.tpl');
  43. }
  44. /************************************************/
  45. if ($do ='add'){
  46.  
  47. $delfile = 'удалить файл';
  48.  
  49. cmsPage::initTemplate('components', 'com_testv_add')->
  50. assign('delfile', $delfile)->
  51. assign('cfg', $cfg)->
  52. display('com_testv_add.tpl');
  53.  
  54. }
  55. /************************************************/
  56.  
  57. }
  58. ?>
#2 28 марта 2014 в 09:26
а что вы хотите вывести? в view вы передаете текст 'добавить файл', в add 'удалить файл'...
Создайте com_testv_view.tpl и внутри напишите <h2>{$addfile}</h2> при входе на site.ru/testv/view выводить "добавить файл"
#3 28 марта 2014 в 10:38
Lora, вот это читали? Я вам уже говорил про ООП. Пока вы не освоите ООП, вы будете постоянно задавать такие вопросы.
#4 28 марта 2014 в 11:42
А какие вопросы принято здесь задавать? И чем по вашему я занимаюсь? Это и есть в моёи понимании изучение php.Просто это практический метод. А вопросы, для знающего ответ всегда будут "эллементарными".
#5 28 марта 2014 в 11:46
Evanescence

а что вы хотите вывести? в view вы передаете текст 'добавить файл', в add 'удалить файл'...
Создайте com_testv_view.tpl и внутри напишите <h2>{$addfile}</h2> при входе на site.ru/testv/view выводить "добавить файл"

Evanescence

Дело не в том что я хочу вывести, а как мне это вывести. У меня и в com_view и в com_add выводятся оба файла $addfile и $dell]file
#6 28 марта 2014 в 12:10
Lora, что должен делать и что на самом деле делает вот этот if($do ='view'){ и вот этот if($do ='add'){ участки кода?
#7 28 марта 2014 в 12:13

Дело не в том что я хочу вывести, а как мне это вывести.

Lora
Приведенный вами код рабочий.
в шаблоне com_testv_view.tpl при действии view в переменной smarty {$addfile} будет "добавить файл"
в шаблоне com_testv_add.tpl при действии add в переменной smarty {$delfile} будет "удалить файл"

У меня и в com_view и в com_add выводятся оба файла $addfile и $dell]file

Lora
вы для начала определитесь с названиями и определениями. очень сложно понять что вы спрашиваете, а вернее, в данном случае вообще не понятна суть вопроса. но вам все равно попытались ответить, вы ответы не слышите.
#8 28 марта 2014 в 12:40

Lora, что должен делать и что на самом деле делает вот этот if($do ='view'){ и вот этот if($do ='add'){ участки кода?

Pasha
Как я понимаю $do смотрит что передаётся в адрессе, и если там view выводит то что для view.А если add, то что для add.А у меня это не работает. И в add и в view передаётся и то что для одного и то что для другого.
#9 28 марта 2014 в 12:48
Значит у вас в $do все время view. Вы роутер сделали?
#10 28 марта 2014 в 12:50
Да.
  1. &#65279;<?php
  2.  
  3. function routes_testv(){
  4. $routes[] = array(
  5. '_uri' => '/^testv\/add$/i',
  6. 'do' => 'add');
  7. return $routes;
  8. }
  9. ?>
#11 28 марта 2014 в 12:59
Да проще все, содержимое переменной $do должно сравниваться с неким значением, но судя по коду все происходит совсем не так, внутри каждого if переменной $do присваивается это значение, а поскольку этому процессу ничего не препятствует, то вполне законно возвращается true и интерпретатор заходит в тело условия, в данном случае в оба условия, причем в $do при таком раскладе всегда будет лежать "add".
Банальная опечатка или глобальное непонимание разницы между = и ==
#12 28 марта 2014 в 13:00
Lora, поверьте моему опыту. Я тоже родился без знания php. И тоже, когда начинал, у меня возникали те же самые вопросы, какие возникают у вас в данный момент. Только я однажды сел и потратил неделю или две на систематическое изучение языка. Поверьте, оно того стоило.
Я не упрекаю вас, что вы вопросы задаете, я вас упрекаю, что вы ОДНИ И ТЕ ЖЕ вопросы задаете. У вас есть желание что-то научиться делать, что импонирует. Но вы не учитесь, что разачаровывает.
#13 28 марта 2014 в 13:11
Pasha, Спасибо, действительно.Понимание разницы есть. Но всё одно к одному. В доках так было, в вопросах так было и как то превратилось в априори. Исправил. Всем спасибо.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.