XF 2.2 Как лучше сделать action

Статус
В этой теме нельзя размещать новые ответы.
Версия XenForo
2.2

susl16c

Проверенные
Сообщения
84
Реакции
12
Баллы
1,710
Подскажите пожалуйста как лучше сделать action чтобы в шаблоне срабатывали переменные от МР. Можно расширить существующий контроллер и тогда почему то форум требует action index или же сделать свой контроллер, но как его сделать чтобы там срабатывали переменные от МР ? Возможно кто то может как пример показать и оба варианта. При расширении action у меня работают в моем шаблоне переменные но только когда action index если делаю свой show он не работает почему то, возможно у меня где то ошибка зарылась.
 
Решение
где моя ошибка
В том, что Вы до сих пор не описали полноценно, что Вы хотите.
Даже если читать эту тему внимательно, можно только мозг сломать себе в попытках понять, что же Вам нужно: несколькими постами ранее Вы выкладывали класс с одним экшном list, а сейчас заявляете, что Вам список не нужен вообще. Тогда к чему нужен был экшн list?

Я Вам рекомендую, всё же, сесть с холодной головой, подумать и написать нормальную тему в правильный раздел:
  1. С описанием того, что Вам нужно.
  2. С примерами кода, как Вы это пытались сделать.
  3. С уточнением, где у Вас возникли проблемы.
Иначе мы так и будем ходить вокруг да около, не придя ни к чему.
Кмк, разделось ошиблись максимально.

Ну и непонятно, что за МР такой, и что именно Вы пытаетесь сделать. А главное как.
 
Что вы подразумеваете под "переменные от MP"
МР-менеджере ресурсов, просто когда делаешь action обычный для открытия по ссылки нужного шаблоны переменные от МР не срабатывают как будто из нет
 
МР-менеджере ресурсов, просто когда делаешь action обычный для открытия по ссылки нужного шаблоны переменные от МР не срабатывают как будто из нет
Прекрасное ТЗ, но ничего не понятно, что за action? В каком он контроллере, что он выполняет, какой результат уже есть, а какой хотите?

"Очень желательно исходный код и тот код, который пытаетесь использовать Вы(только текстом, не скриншотами)".
 
Последнее редактирование:
Я прописывал так:
PHP:
<?php

namespace TestProjects\Test;

use XF\Mvc\ParameterBag;
use XF\Pub\Controller\AbstractController;

class Test extends XFCP_Test
{

    public function actionList()
    {
        return $this->view('TestProjects:Test', 'list');
    }
}
а шаблон делаю так:
Код:
<div id="page-con-content-{$resource.resource_id}"></div>
и вот это не подтягивается $resource.resource_id - хотя контроллер как расширение делаю.
 
Я прописывал так:
PHP:
<?php

namespace TestProjects\Test;

use XF\Mvc\ParameterBag;
use XF\Pub\Controller\AbstractController;

class Test extends XFCP_Test
{

    public function actionList()
    {
        return $this->view('TestProjects:Test', 'list');
    }
}
а шаблон делаю так:
Код:
<div id="page-con-content-{$resource.resource_id}"></div>
и вот это не подтягивается $resource.resource_id - хотя контроллер как расширение делаю.
Так пробробросьте переменную в шаблон, или он из воздуха должен нарисовать её?
 
Я прописывал так:
PHP:
<?php

namespace TestProjects\Test;

use XF\Mvc\ParameterBag;
use XF\Pub\Controller\AbstractController;

class Test extends XFCP_Test
{

    public function actionList()
    {
        return $this->view('TestProjects:Test', 'list');
    }
}
а шаблон делаю так:
Код:
<div id="page-con-content-{$resource.resource_id}"></div>
и вот это не подтягивается $resource.resource_id - хотя контроллер как расширение делаю.
Вы должны с помощью функции setParam или с помощью ViewParams(скачайте любой плагин и посмотрите как) передать ее в шаблон, но сначала объявить ее в коде и что она должна делать.
 
Последнее редактирование:
Так пробробросьте переменную в шаблон, или он из воздуха должен нарисовать её?
А как ее туда пробросить ?
И почему он ищет постоянно:
Код:
Запрашиваемая страница не найдена. (Code: invalid_controller, controller: TestProjects:Test, action: index)
Должен же искать action: list
Пробовал так:
Код:
class Test extends XFCP_Test
{

    public function actionList()
    {
   
        $this->assertRegistrationRequired();
       
        $resource = $this->assertViewableResource($params->resource_id);
       
        $viewParams = [
            'resource'  => $resource,
        ];
   
        return $this->view('TestProjects:Test', 'list', $viewParams);
    }
}
Посуте что мне нужно, только по нажатию по своей ссылки, чтобы открылся нужный шаблон и там могли отрабатывать переменные МР и все.
 
Последнее редактирование:
А как ее туда пробросить ?
И почему он ищет постоянно:
Код:
Запрашиваемая страница не найдена. (Code: invalid_controller, controller: TestProjects:Test, action: index)
Должен же искать action: list
Пробовал так:
Код:
class Test extends XFCP_Test
{

    public function actionList()
    {
  
        $this->assertRegistrationRequired();
      
        $resource = $this->assertViewableResource($params->resource_id);
      
        $viewParams = [
            'resource'  => $resource,
        ];
  
        return $this->view('TestProjects:Test', 'list', $viewParams);
    }
}
Посуте что мне нужно, только по нажатию по своей ссылки, чтобы открылся нужный шаблон и там могли отрабатывать переменные МР и все.
Можете пожалуйста описать то, что должно происходить на странице?
 
Для начала хотелось чтобы по actionList а точнее при нажатии на ссылку подтянулись переменные из МР <div id="page-con-content-{$resource.resource_id}"></div> вместо {$resource.resource_id} подтянулся id ресурса и именно в мой шаблон.
 
Для начала хотелось чтобы по actionList а точнее при нажатии на ссылку подтянулись переменные из МР <div id="page-con-content-{$resource.resource_id}"></div> вместо {$resource.resource_id} подтянулся id ресурса и именно в мой шаблон.
Отправьте полностью ваш шаблон
 
Шаблон тестовый там нет нечего он весь вот так выглядит:
Код:
<div id='mui'></div>
<div id="page-con-content-{$resource.resource_id}"></div>
Просто пока хочется понять как вытаскивать переменные из плагинов в свой шаблон.
 
и вот это не подтягивается $resource.resource_id - хотя контроллер как расширение делаю.
И что?
Вы целиком переопределяете весь экшн, не вызывая родительскую функцию и даже не получая ресурс с последующим пропихиванием в view params.

XenForo не работает на силе магии. Если Вы делаете расширение класса, то он именно это и делает через стандартные возможности PHP. И в PHP, когда Вы делаете расширение класса, и переопределяете целиком функцию, он (PHP) сам родительскую не вызовет.
Либо вызывайте родительскую функцию и получайте из неё ресурс с последующим пропихиванием в view params, либо сами получайте ресурс и запихивайте его в парамсы. Примеров на форуме такого трюка - предостаточно.
 
И что?
Вы целиком переопределяете весь экшн, не вызывая родительскую функцию и даже не получая ресурс с последующим пропихиванием в view params.

XenForo не работает на силе магии. Если Вы делаете расширение класса, то он именно это и делает через стандартные возможности PHP. И в PHP, когда Вы делаете расширение класса, и переопределяете целиком функцию, он (PHP) сам родительскую не вызовет.
Либо вызывайте родительскую функцию и получайте из неё ресурс с последующим пропихиванием в view params, либо сами получайте ресурс и запихивайте его в парамсы. Примеров на форуме такого трюка - предостаточно.
А что это за родительская функция ?
Я думал таким образом ее я вызываю:
PHP:
$resource = $this->assertViewableResource($params->resource_id);
 
Я думал таким образом ее я вызываю:
Ну сейчас вызываете, я отвечал на тот изначальный вопрос, где был чисто возврат вьюшки.

И почему он ищет постоянно:
Код:
Запрашиваемая страница не найдена. (Code: invalid_controller, controller: TestProjects:Test, action: index)
Должен же искать action: list
Вот это не очень понял. Почему он должен list вызывать? Дефолтно всегда вызывается index, если не указан иной экшн в адресной строке. Но в контроллерах может быть воткнут костыль, который вызывает тот же view вместо index если в адресной строке есть что-то, похожее на идентификатор того же пользователя или темы (зависит от контекста).

И опять же, я считаю по прежнему, что Вы не в тот узел написали, и что скорее всего весь этот тред улетит в мусорку. Перенесите обсуждение вопроса в соответствующий.
 
Может можно как то это сделать без action я незнаю, все что мне нужно добавить в МР свою ссылку list при нажатии на нее чтобы открывался мой шаблон и там могли подтягиваться переменные из МР и все.
 
Может можно как то это сделать без action я незнаю, все что мне нужно добавить в МР свою ссылку list при нажатии на нее чтобы открывался мой шаблон и там могли подтягиваться переменные из МР и все.
Какой конечный результат вы хотите получить? Это будет страница по какому адресу? Или вы хотите расширить уже существующую? Если 2, то парент используйте и return его.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу