XF 1.5 Редактирование категории (Программирование)

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

xsacha

Только чтение
Сообщения
1,262
Реакции
1,383
Баллы
5,850
Подскажите как упрости вот такой код для редактирования категории.
Модель:
PHP:
    public function getCategories(){
        return $this->_getDb()->fetchAll('
            SELECT *
            FROM xf_ice_shop_categories
            ORDER BY category_id'
        );
    }
  
    public function getCategory($categoryId)
    {
        return $this->_getDb()->fetchRow('
            SELECT *
            FROM xf_ice_shop_categories
            WHERE category_id = ?
        ', $categoryId);
    }
Модель на всякий случай для общей картины, фрагмент на редактирование в контроллере:
PHP:
public function actionEdit()
    {
        $category_id = $this->_input->filterSingle('category_id', XenForo_Input::UINT);
        $category = $this->_getCategoryOrError($category_id);
      
        $db = XenForo_Application::get('db');     
      
        $results = $db->fetchRow('
            SELECT *
            FROM xf_ice_shop_categories
            WHERE category_id = ?
        ', $category_id);
      
        $viewParams = array(
            "category_id" => $category_id,
            "category_name" => $results['category_name'],
            "product_id" => $results['product_id'],
            "user_id" => $results['user_id'],
            "category_count" => $results['category_count'],
            "show" => $this->_getDisplayOptions()
        );
      
        return $this->responseView('XenForo_ViewAdmin_Shop_Categories_Edit', 'ice_shop_category_edit', $viewParams);
    }
Сам шаблон:
PHP:
<fieldset>
        <xen:textboxunit label="{xen:phrase ice_shop_category_name}:"
                 name="category_name" value="{$category_name}" />
    </fieldset>
Часть из шаблона которая вытаскивает из базы всего одно поле название категории.

Пробовал так нечего не вытаскивается из базы, контроллер:
PHP:
    public function actionEdit()
    {
        $category_id = $this->_input->filterSingle('category_id', XenForo_Input::UINT);
        $category = $this->_getCategoryOrError($category_id);
        return $this->_getEditResponse($category);
    }
  
    protected function _getEditResponse($category){
      
        $viewParams = array(
                "category" => $category,
                "show" => $this->_getDisplayOptions()
        );
        return $this->responseView('XenForo_ViewAdmin_Shop_Categories_Edit', 'ice_shop_category_edit', $viewParams);
    }
Шаблон:
PHP:
    <fieldset>
        <xen:textboxunit label="{xen:phrase ice_shop_category_name}:"
                 name="category_name" value="{$category.category_name}" />
    </fieldset>
Ошибок при втором варианте нет не каких просто пустое поле.
 
Последнее редактирование:
PHP:
protected function _getCategoryOrError($category_id)
    {
        $info = $this->_getIceShopCategoriesModel()->getCategories($category_id);

        if (!$info)
        {
            throw $this->responseException($this->responseError(new XenForo_Phrase('Ice_Shop_category_notfound'), 404));
        }

        return $info;
    }
 
.fix
PHP:
   protected function _getCategoryOrError($category_id)
    {
        $info = $this->_getIceShopCategoriesModel()->getCategory($category_id);

        if (!$info)
        {
            throw $this->responseException($this->responseError(new XenForo_Phrase('Ice_Shop_category_notfound'), 404));
        }

        return $info;
    }
 
Последнее редактирование модератором:
Блин в очередной раз огромное спасибо, поправил функцию в модели и про это совсем забыл. И главное ошибок не было не каких.

var_dump используйте для отладки информации, смотрите, что есть в массиве $category
А я им не умею пока пользоваться как его прописать и применить.
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу