Yii2 Imperavi Redactor

Выкладываем свои наработки
phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 10:04

Спасибо, действительно в actions(), тогда что прописать в view если actions() у меня в ImgController ?

так ?

Код: Выделить всё

'imageUpload' => Url::to(['/img/imageupload']) 
не срабатывает actions тоесть до него не доходит.

Аватара пользователя
ElisDN
Сообщения: 5358
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение ElisDN » 2016.11.24, 10:23

phpstarter писал(а):не срабатывает actions тоесть до него не доходит.
/img/image-upload

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 10:40

не срабатывает. в дебагере 500 ошибка вылетает :(

view

Код: Выделить всё

'imageUpload' => Url::to(['/img/image-upload','n'=>$userFolder]),
'imageManagerJson' => Url::to(['/img/images-get', 'n'=>$userFolder]),
контроллер

Код: Выделить всё

   public function actions($n)
    {

 ...тест запись в БД...

        $url= '/files/'.$n.'/temp/';
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
            'image-upload' => [
                'class' => 'vova07\imperavi\actions\UploadAction',
                'url' => $url, // Directory URL address, where files are stored.
                'path' => '@webroot' . $url, // Or absolute path to directory where files are stored.
            ],
            'images-get' => [
                'class' => 'vova07\imperavi\actions\GetAction',
                'url' => $url,
                'path' => '@webroot' . $url,
                'type' => '0',
            ],
        ];
    }
Хотя визуально все ок. alert True выходит но больше ничего не происходит.

Аватара пользователя
ElisDN
Сообщения: 5358
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение ElisDN » 2016.11.24, 10:57

phpstarter писал(а):не срабатывает. в дебагере 500 ошибка вылетает :(
Вот и прочитайте текст ошибки в runtime/logs/app.log.

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 11:21

Код: Выделить всё

Declaration of app\controllers\ImgController::actions() should be compatible with yii\base\Controller::actions() 
Что это может значить ? :roll:

Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Yii2 Imperavi Redactor

Сообщение Onotole » 2016.11.24, 11:58

phpstarter писал(а):

Код: Выделить всё

Declaration of app\controllers\ImgController::actions() should be compatible with yii\base\Controller::actions()
Что это может значить ? :roll:
Перевести пробовали?

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 12:04

Тоесть надо в папке установленного yii2 в папке backend наверно модифицировать SiteController так чтобы actions были похожи ? других контроллеров у меня там нет. Я правильно понял?

Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Yii2 Imperavi Redactor

Сообщение Onotole » 2016.11.24, 12:09

phpstarter писал(а):Тоесть надо в папке установленного yii2 в папке backend наверно модифицировать SiteController так чтобы actions были похожи ? других контроллеров у меня там нет. Я правильно понял?
В ошибке есть что-то про SiteController?
Объявление метода actions в классе app\controllers\ImgController должно быть идентичным методу actions класса yii\base\Controller

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 12:12

Прошу меня простить за тупость но где находится yii\base\Controller ? У меня папки base нигде нету просто

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение Dominus » 2016.11.24, 12:55

phpstarter писал(а):Прошу меня простить за тупость но где находится yii\base\Controller ? У меня папки base нигде нету просто

Код: Выделить всё

vendor\yiisoft\yii2
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 13:21

Спасибо нашел. Прописал там зеркальную копию того что у меня в Img actions

Проблема в том что в скобках я передаю переменную. actions($n)
и если в base также прописать то выходит ошибка.
так как там ниже

Код: Выделить всё

$actionMap = $this->actions(); 
также требует чтобы в скобках прописалась $n
Но когда прописываю потом получается что этажесамая $n - undefined :(

вот в этом блоке

Код: Выделить всё

   public function createAction($id)
    {
        if ($id === '') {
            $id = $this->defaultAction;
        }

        $actionMap = $this->actions($n);
        if (isset($actionMap[$id])) {
            return Yii::createObject($actionMap[$id], [$id, $this]);
        } elseif (preg_match('/^[a-z0-9\\-_]+$/', $id) && strpos($id, '--') === false && trim($id, '-') === $id) {
            $methodName = 'action' . str_replace(' ', '', ucwords(implode(' ', explode('-', $id))));
            if (method_exists($this, $methodName)) {
                $method = new \ReflectionMethod($this, $methodName);
                if ($method->isPublic() && $method->getName() === $methodName) {
                    return new InlineAction($id, $this, $methodName);
                }
            }
        }

        return null;
    } 

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 13:30

если и там прописать то потом еще в другом месте требует, и в итоге если в base везде где надо понапихать этот $n потом обычные контроллеры тоже надо модифицировать, так как они перестают быть похожими на base :(

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение Dominus » 2016.11.24, 13:33

Всё что в папке vendor изменять нельзя! Можно только смотреть исходники. У вас ошибка где то в вашем коде, ищите там) и в public function actions($n), попробуйте задать public function actions($n = null) то есть значение по умолчанию.
В вашем actions еще есть error и captcha они тоже ожидают какого то значения в $n поэтому надо задать значение по умолчанию)
Последний раз редактировалось Dominus 2016.11.24, 13:42, всего редактировалось 1 раз.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 13:41

теперь все контроллеры требуют модифицировать ихние экшены по примеру ($n = null). Это нормально ? Весь код я выложил. Другого нет. В чем может быть ошибка ? может не передавать $n в скобках а использовать post внутри экшена ?

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 13:59

Сработало вот так
$request = Yii::$app->request;
$n = $request->get('n');

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение Dominus » 2016.11.24, 14:01

phpstarter писал(а):теперь все контроллеры требуют модифицировать ихние экшены по примеру ($n = null). Это нормально ? Весь код я выложил. Другого нет. В чем может быть ошибка ? может не передавать $n в скобках а использовать post внутри экшена ?
Как вариант не передавать значение в actions а брать из функции, которая генерирует путь.

Код: Выделить всё

public function getPath() {
     $n = Yii::$app->request->get('n'); // если передается методом get
     return '/files/'.$n.'/temp/';
} 
а в actions уже вызывать эту функцию

Код: Выделить всё

public function actions() {
...
           'image-upload' => [
                'class' => 'vova07\imperavi\actions\UploadAction',
                'url' => self::getPath(), // Directory URL address, where files are stored.
                'path' => '@webroot' . self::getPath(), // Or absolute path to directory where files are stored.
            ],
            'images-get' => [
                'class' => 'vova07\imperavi\actions\GetAction',
                'url' => self::getPath(),
                'path' => '@webroot' . self::getPath(),
                'type' => '0',
            ],
...
} 
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.24, 14:07

да да! Большое спасибо, примерно так и сделал :)

Arni
Сообщения: 28
Зарегистрирован: 2016.11.29, 00:01

Re: Yii2 Imperavi Redactor

Сообщение Arni » 2016.11.29, 00:06

Подскажите, у всех виджет переименовывает изображения и файлы, делает такого плана - 583c940fbdec9.png или у меня не правильно что-то настроено? Сохраняю в:

Код: Выделить всё

'image-upload' => [
            'class' => 'vova07\imperavi\actions\UploadAction',
        'url' => '/frontend/web/images/posts',
            'path' => '@frontend/web/images/posts',
        ], 

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение Dominus » 2016.11.29, 11:41

Arni писал(а):Подскажите, у всех виджет переименовывает изображения и файлы, делает такого плана - 583c940fbdec9.png или у меня не правильно что-то настроено? Сохраняю в:

Код: Выделить всё

'image-upload' => [
            'class' => 'vova07\imperavi\actions\UploadAction',
        'url' => '/frontend/web/images/posts',
            'path' => '@frontend/web/images/posts',
        ], 
Что бы отключить уникальность имен файлов, в настройках нужно указать:

Код: Выделить всё

'unique' => false,
По умолчанию там стоит true.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

Arni
Сообщения: 28
Зарегистрирован: 2016.11.29, 00:01

Re: Yii2 Imperavi Redactor

Сообщение Arni » 2016.11.29, 12:26

Dominus писал(а): Что бы отключить уникальность имен файлов, в настройках нужно указать:

Код: Выделить всё

'unique' => false, 
По умолчанию там стоит true.
Спасибо! Не знаете есть ли какая-то настройка, чтобы в файлах с именем на кирилице при сохранении не коверкалось название? Получается Киевстар - акты.xlsx

Ответить