J'ai une certaine forme d'envoyer un e-mail, mais je ne savais pas comment faire, je suis actuellement en utilisant yii2
ici est ma formeforme yii2 envoyer pièce jointe
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\captcha\Captcha;
use yii\mail\BaseMailer;
$this->title = 'Career';
$this->params['breadcrumbs'][] = $this->title;
?>
<?php $form = ActiveForm::begin(['id' => 'career-form']); ?>
<?= $form->field($model, 'name')->textInput(['autofocus' => true, 'placeholder' => 'Name', 'class' => 'required'])->label(false) ?>
<?= $form->field($model, 'files')->fileInput() ?>
<input id="career-form-submit" type="submit" value="SUBMIT">
<?php if (Yii::$app->session->hasFlash('CareerFormSubmitted')): ?>
<?php ActiveForm::end(); ?>
et voici mes modèles
<?php
namespace app\models;
use Yii; use yii\base\Model; use yii\web\UploadedFile;
class CareerForm extends Model {
public $name;
public $files;
public function rules()
{
return [
[['name','files'], 'required'], ['files','file'],];
}
public function upload()
{
if ($this->validate()) {
$this->files->saveAs('uploads/career/' . $this->file->baseName . '.' . $this->files->extension);
$this->files = 'uploads/career/' . $this->file->baseName . '.' . $this->files->extension;
return true;
} else {
return false;
}
}
public function career($email)
{
if ($this->validate()) {
Yii::$app->mailer->compose('mail.php' ,[
'name' => $this->name,
])
->setTo($email)
->setFrom([$this->email => $this->name])
->setSubject('subject, '.$this->name)
->attach($this->files)
->send();
return true;
}
return false;
}
}
et mon contrôleur de site est
public function actionCareer_2()
{
$model = new CareerForm();
//$model->upload();
if ($model->load(Yii::$app->request->post()) && $model->career(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('CareerFormSubmitted');
$model->files = UploadedFile::getInstance($model, 'files');
$model->upload();
return $this->refresh();
}
return $this->render('career_2', [
'model' => $model,
]);
}
mais encore une erreur, quelqu'un peut me aider? lequel à corriger, je suis encore débutant à utiliser yii2
.
ce que je veux est d'envoyer le message en utilisant mail.php
que je sauverai le répertoire de courrier et il enregistre le fichier que le téléchargement de l'utilisateur et le fixer sur l'e-mail, merci pour la réponse
EDIT: l'erreur de mon xampp
juste dit "Une erreur interne du serveur s'est produite." mais, il a envoyé un e-mail, je pense que l'erreur est du fichier téléchargé, il ne stocke pas le fichier dans le répertoire uploads/carrière et l'email n'a pas de pièce jointe
EDIT: après avoir vérifié le app.log comme suggéré je l'ai trouvé une erreur erreur: classe 'app\controllers\UploadedFile'
introuvable dans le contrôleur de site, mais quand je mets que le changement d'erreur de « propriétés inconnues », voici l'erreur complète après que j'ajouter le
yii\base\UnknownPropertyException: Getting unknown property: app\models\CareerForm::file in C:\xampp\htdocs\project\vprojectr\yiisoft\yii2\base\Component.php:143
if (method_exists($this, 'set' . $name)) { throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name); } else { throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name); }
Stack trace:
#0 C:\xampp\htdocs\project\models\CareerForm.php(86): yii\base\Component->__get('file')
$this->files->saveAs('uploads/career/' . $this->file->baseName . '.' . $this->files->extension);
#1 C:\xampp\htdocs\project\controllers\SiteController.php(117): app\models\CareerForm->upload()
$model->upload();
#2 [internal function]: app\controllers\SiteController->actionCareer_2()
#3 C:\xampp\htdocs\project\vprojectr\yiisoft\yii2\base\InlineAction.php(55): call_user_func_array(Array, Array)
#4 C:\xampp\htdocs\project\vprojectr\yiisoft\yii2\base\Controller.php(154): yii\base\InlineAction->runWithParams(Array)
#5 C:\xampp\htdocs\project\vprojectr\yiisoft\yii2\base\Module.php(454): yii\base\Controller->runAction('career_2', Array)
#6 C:\xampp\htdocs\project\vprojectr\yiisoft\yii2\web\Application.php(84): yii\base\Module->runAction('site/career_2', Array)
#7 C:\xampp\htdocs\project\vprojectr\yiisoft\yii2\base\Application.php(375): yii\web\Application->handleRequest(Object(yii\web\Request))
#8 C:\xampp\htdocs\project\web\index.php(12): yii\base\Application->run()
Quelle est l'erreur? – gmazzotti
Partager les détails de l'erreur –
Je ne connais pas l'erreur, mais mon xampp localhost montre seulement "Une erreur interne du serveur s'est produite." –