Почему не работает кнопка для загрузки картинок ?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
Maxemp
Сообщения: 44
Зарегистрирован: 2017.12.04, 17:17
Контактная информация:

Почему не работает кнопка для загрузки картинок ?

Сообщение Maxemp »

Проблема заключается в том, что после выбора картинки, и нажатии кнопки "upload" вообще ничего не происходит, и ещё когда я выбираю вторую картинку, ту что я выбрал первой пропадает и заменяется второй, хоть такого не должно происходить.

Котроллер:

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

class PhotoController extends Controller
{
  private $service;

  public function __construct( $id, $module, array $config = [], PhotoManageService $service )
  {
    $this->service = $service;
    parent::__construct( $id, $module, $config );
  }

  public function actionCreate()
  {
    $form = new PhotoForm();
    if ($form->load(Yii::$app->request->post()) && $form->validate()){
      try{
        $this->service->addPhotos($form);
        Yii::$app->session->setFlash('success', 'photo uploaded');
        return $this->goHome();
      }catch(\RuntimeException $e){
        Yii::$app->errorHandler->logException($e);
        Yii::$app->session->setFlash($e->getMessage());
      }
    }

    return $this->render('create', ['model' => $form]);

  }

}
Модель :

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

class Photo extends ActiveRecord
{

  public static function create(UploadedFile $file):self
  {
    $photo = new static();
    $photo->file = $file;
    return $photo;
  }

  public static function tableName()
  {
    return '{{%photo}}';
  }

  public function behaviors() {
    return [
      [
        'class' => ImageUploadBehavior::className(),
        'attribute' => 'file',
        'createThumbsOnRequest' => true,
        'filePath' => '@staticRoot/origin/[[pk]].[[extension]]',
        'fileUrl' => '@static/origin/[[pk]].[[extension]]',
        'thumbPath' => '@staticRoot/cache/[[profile]]_[[pk]].[[extension]]',
        'thumbUrl' => '@static/cache/[[profile]]_[[pk]].[[extension]]',
        'thumbs' => [
          'admin' => ['width' => 100, 'height' => 70],
          'thumb' => ['width' => 640, 'height' => 480]
        ],
      ],
    ];
  }

}
Вид:

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

<div class="box box-default">
  <?php $form = ActiveForm::begin([
        'enableClientValidation' => false,
    'options' => ['enctype'=>'multipart/form-data']
  ]); ?>
  <div class="box-body">
    <?= $form->field($model, 'files[]')->widget(FileInput::class, [
      'options' => [
        'accept' => 'image/*',
        'multiple' => true,
      ]
    ])
    ?>
  </div>

  <? ActiveForm::end();?>
</div>
форма:

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

class PhotoForm extends Model
{

  /**
   * @var UploadedFile[]
   */
  public $files;

  public function rules() {
    return [
      ['files', 'each', 'rule' => ['image']],
    ];
  }

  public function beforeValidate(): bool
  {
    if (parent::beforeValidate()){
      $this->files = UploadedFile::getInstances($this, 'files');
      return true;
    }
    return false;
  }
}
BalykhinAS
Сообщения: 179
Зарегистрирован: 2018.02.05, 13:41
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение BalykhinAS »

А как вы дошли до такой весьма продвинутой реализации но даже не знаете что делать с кнопкой? :-) там где вы взяли этот код (если я правильно понимаю этот пример из вебинары Elisdn) прилагается видео часов на 50 после просмотра которого у вас не будет подобных вопросов
Maxemp
Сообщения: 44
Зарегистрирован: 2017.12.04, 17:17
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение Maxemp »

Wizard писал(а): 2018.03.10, 10:52 А как вы дошли до такой весьма продвинутой реализации но даже не знаете что делать с кнопкой? :-) там где вы взяли этот код (если я правильно понимаю этот пример из вебинары Elisdn) прилагается видео часов на 50 после просмотра которого у вас не будет подобных вопросов
Забавно получилось, я задал такой же вопрос на стаке, там этот код назвали макаронным и посоветовали переписать, а тут его называют продвинутым)

Вы правы, я сделал как у Дмитрия, но чуть-чуть адаптировал под свои нужды,а проблема возможно это из-за того, что я не досмотрел часть вебинара про картинки.
BalykhinAS
Сообщения: 179
Зарегистрирован: 2018.02.05, 13:41
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение BalykhinAS »

Maxemp писал(а): 2018.03.10, 13:16
Wizard писал(а): 2018.03.10, 10:52 А как вы дошли до такой весьма продвинутой реализации но даже не знаете что делать с кнопкой? :-) там где вы взяли этот код (если я правильно понимаю этот пример из вебинары Elisdn) прилагается видео часов на 50 после просмотра которого у вас не будет подобных вопросов
Забавно получилось, я задал такой же вопрос на стаке, там этот код назвали макаронным и посоветовали переписать, а тут его называют продвинутым)

Вы правы, я сделал как у Дмитрия, но чуть-чуть адаптировал под свои нужды,а проблема возможно это из-за того, что я не досмотрел часть вебинара про картинки.
посмотрите весь вебинер. вы больше времени потратите на метод тыка и все равное не будете знать что вы делаете
BalykhinAS
Сообщения: 179
Зарегистрирован: 2018.02.05, 13:41
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение BalykhinAS »

Maxemp писал(а): 2018.03.10, 13:16 Забавно получилось, я задал такой же вопрос на стаке, там этот код назвали макаронным и посоветовали переписать, а тут его называют продвинутым)
возможно потому что они не могу понять что происходит в приведенном коде? :D
BalykhinAS
Сообщения: 179
Зарегистрирован: 2018.02.05, 13:41
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение BalykhinAS »

не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Maxemp
Сообщения: 44
Зарегистрирован: 2017.12.04, 17:17
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение Maxemp »

Wizard писал(а): 2018.03.10, 14:36 не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит
BalykhinAS
Сообщения: 179
Зарегистрирован: 2018.02.05, 13:41
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение BalykhinAS »

Maxemp писал(а): 2018.03.10, 14:54
Wizard писал(а): 2018.03.10, 14:36 не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит
покажите исходный код вашей отрендереной формы
Maxemp
Сообщения: 44
Зарегистрирован: 2017.12.04, 17:17
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение Maxemp »

Wizard писал(а): 2018.03.10, 15:01
Maxemp писал(а): 2018.03.10, 14:54
Wizard писал(а): 2018.03.10, 14:36 не знаю в чем там у вам точно проблема но вашей форме не помешала бы кнопка

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

<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит
покажите исходный код вашей отрендереной формы

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

<div class="box box-default">
	<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
	<div class="box-body">
		<?= $form->field($model, 'files[]')->widget(FileInput::class, [
			'options' => [
				'accept' => 'image/*',
				'multiple' => true,
			]
		])
		?>
	</div>

	<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
	<? ActiveForm::end();?>
</div>
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение ElisDN »

Откройте отладочную консоль по F12 в браузере. Мjжет там JavaScript ошибки вываливаются.
Maxemp
Сообщения: 44
Зарегистрирован: 2017.12.04, 17:17
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение Maxemp »

ElisDN писал(а): 2018.03.11, 22:48 Откройте отладочную консоль по F12 в браузере. Мjжет там JavaScript ошибки вываливаются.
Там все пусто.
BalykhinAS
Сообщения: 179
Зарегистрирован: 2018.02.05, 13:41
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение BalykhinAS »

Maxemp писал(а): 2018.03.12, 09:02
ElisDN писал(а): 2018.03.11, 22:48 Откройте отладочную консоль по F12 в браузере. Мjжет там JavaScript ошибки вываливаются.
Там все пусто.
потому что выше головы прыгнут сложно) вы взяли код в котором очевидно на данный момент не можете разобраться, попробуйте сделать по мануалу, с нуля. помучаетесь и поймете что просмотр вебинара от и до не такая уж плохая идея. и захватите заодно ООП од Дмитрия. на его блоге есть куча информации... Нет такого метода "PHP - за неделю от новичка до профи", если взялись начинайте штудировать или не беритесь вообще, даром только время потратите
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение dmg »

Maxemp писал(а): 2018.03.10, 15:18
Wizard писал(а): 2018.03.10, 15:01
Maxemp писал(а): 2018.03.10, 14:54

Кнопка также не работает, а конкретно при нажатии на нее ничего не происходит
покажите исходный код вашей отрендереной формы

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

<div class="box box-default">
	<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
	<div class="box-body">
		<?= $form->field($model, 'files[]')->widget(FileInput::class, [
			'options' => [
				'accept' => 'image/*',
				'multiple' => true,
			]
		])
		?>
	</div>

	<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
	<? ActiveForm::end();?>
</div>
у вас просили код формы из браузера.
возможно, тут ошибка. ( <?php )

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

	<? ActiveForm::end();?>
Maxemp
Сообщения: 44
Зарегистрирован: 2017.12.04, 17:17
Контактная информация:

Re: Почему не работает кнопка для загрузки картинок ?

Сообщение Maxemp »

dmg писал(а): 2018.03.12, 13:12
Maxemp писал(а): 2018.03.10, 15:18
Wizard писал(а): 2018.03.10, 15:01

покажите исходный код вашей отрендереной формы

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

<div class="box box-default">
	<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
	<div class="box-body">
		<?= $form->field($model, 'files[]')->widget(FileInput::class, [
			'options' => [
				'accept' => 'image/*',
				'multiple' => true,
			]
		])
		?>
	</div>

	<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
	<? ActiveForm::end();?>
</div>
у вас просили код формы из браузера.
возможно, тут ошибка. ( <?php )

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

	<? ActiveForm::end();?>
Спасибо, вы были правы
Закрыто