Я пытаюсь изучить Symfony4 и хочу создать приложение с помощью API Twitter.У меня проблема в том, что когда я пытаюсь загрузить изображение в форме, я не могу сохранить значение записи (значок) в переменной $ _FILE
, и именно поэтому он показывает мне эту ошибку.
Я намерен опубликовать мультимедийный твит, если вместо того, чтобы пытаться загрузить фотографию по форме, я проставил маршрут, а если вы опубликуете твит с фотографией, то при таком подходе я не смогу выбрать, какую фотографиюзагрузить, и он всегда будет публиковать тот, который определен маршрутом.
Это мой код ниже:
$session= new Session(); #en symfony la session se crea instanciando un objeto de la clase Session.
$session->start(); #para iniciar la sesion, llamamos al metodo start del objeto creado a partir de Session, en lugar de usar session_start() como veniamos haciendo en php plano.
d($session->set('media',$_FILES['file'])); # d() = vardump() pertenece a la libreria kint
$mensaje = $_POST['tweet']; #almacena el texto introducido en textarea
$respuesta = sendTweet($mensaje); #llama a la funcion para enviar tweet (en /lib/funcionesTwitter.php) y pasa como parametro el texto almacenado en textarea
d($json = json_decode($respuesta)); #descompone el resultado de la funcion sendTweet() en un json con los datos del tweet que luego llamaremos en la plantilla twig
/*claves de acceso de la api creada en twiter.developers*/
$accessToken="xxx";
$accessTokenSecret="xxx";
$consumerKey="xxx";
$consumerKeySecret="xxx";
$connection = new TwitterOAuth($consumerKey, $consumerKeySecret, $accessToken, $accessTokenSecret);
$foto= $session->get('media');
$media1 = $connection->upload('media/upload', ['media' => $foto]); #almacenamos la imagen en la variable y usamos el obj connection para llamar al metodo de la clase TwitterOAuth de la libreria con el mismo nombre.
$media2 = $connection->upload('media/upload', ['media' => '../doc/img/supernova2.jpg']);
$parameters = [
'status' => $json->text,
'media_ids' => implode(',', [$media1->media_id_string, $media2->media_id_string])
];
$result = $connection->post('statuses/update', $parameters);
#redirige al template twig con la ruta de esta funcion e inserta en el template las variables aqui definidas y que llamemos en el tpl.
return $this->render('TwitterTpl/twitter.html.twig', array(
'tweets'=>'',
'titulo'=>'',
'json'=>$json,
'imagen'=>$result
));
, и это форма, которую я имею в шаблоне ветки:
<form class="fomulario" enctype="multipart/form-data" action="{{path('enviaTweetMulti')}}" method="post" >
<label for="exampleFormControlTextarea1">Enviar tweet</label>
<textarea class="form-control z-depth-1 mb-3" id="exampleFormControlTextarea6" rows="3" placeholder="Write something here..." rows="7" cols="20" maxlength="140" name="tweet"></textarea>
<div class="form-group">
<input type="file" class="form-control-file" id="exampleFormControlFile1">
</div>
<button type="submit" class="btn btn-outline-primary waves-effect" ><i class="fa fa-share ml-1"></i> Tweet</button>
</form>
моя идея заключается в том, что в результате появилась возможность выбрать фотографию, которая была на моем компьютере с формой, и что при отправке в Твиттере был опубликован твит с выбранным изображением
но, как я уже сказал, выдает ошибку. Примечание: неопределенный индекс: файл в этой строке $ session-> set ('media', $ _ FILES ['file'])