comment résoudre le problème de sauvegarder un formulaire à chaque refrech de la page dans laravel 5.4?
-------------
Après une validation d'un formulaire, le sauvegarde des données dans une BDD s'effectue très bien. mais après rafraîchir la page, le sauvegarde s'effectue une autre fois.
comment effectuer une seule sauvegarde dans la BDD malgré plusieurs refretch de la page?
Salut, est-il possible de créer avec Laravel une API telle que celle de PayPal et l'intégrer dans plusieurs site? si oui, est-il possible d'avoir un tuto me permettant d'acquerir les connaissance pour mettre sur pied une API robuste avec Laravel?
On peut tout faire avec Laravel, y compris des API. A ma connaissance le meilleur support est le bouquin Build APIs You Won't Hate. C'est en anglais mais c'est vraiment très complet.
Bonjour à vous, j'ai une erreur que je n'arrive pas a résoudre, en réalité j'ai installer le package Dingo pour la réalisation d'une API, mais cela ne marche pas.
j'ai lancer l'installation du package
je l'ai enregistrer dans le config/app.php
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
// Dingo laravel service provider....
Dingo\Api\Provider\LaravelServiceProvider::class
puis la configuration du fichier config/api.php
<?php
return [
/*
|--------------------------------------------------------------------------
| Standards Tree
|--------------------------------------------------------------------------
|
| Versioning an API with Dingo revolves around content negotiation and
| custom MIME types. A custom type will belong to one of three
| standards trees, the Vendor tree (vnd), the Personal tree
| (prs), and the Unregistered tree (x).
|
| By default the Unregistered tree (x) is used, however, should you wish
| to you can register your type with the IANA. For more details:
| https://tools.ietf.org/html/rfc6838
|
*/
'standardsTree' => env('API_STANDARDS_TREE', 'vnd'),
/*
|--------------------------------------------------------------------------
| API Subtype
|--------------------------------------------------------------------------
|
| Your subtype will follow the standards tree you use when used in the
| "Accept" header to negotiate the content type and version.
|
| For example: Accept: application/x.SUBTYPE.v1+json
|
*/
'subtype' => env('API_SUBTYPE', 'trackye'),
/*
|--------------------------------------------------------------------------
| Default API Version
|--------------------------------------------------------------------------
|
| This is the default version when strict mode is disabled and your API
| is accessed via a web browser. It's also used as the default version
| when generating your APIs documentation.
|
*/
'version' => env('API_VERSION', 'v1'),
/*
|--------------------------------------------------------------------------
| Default API Prefix
|--------------------------------------------------------------------------
|
| A default prefix to use for your API routes so you don't have to
| specify it for each group.
|
*/
'prefix' => env('API_PREFIX', null),
/*
|--------------------------------------------------------------------------
| Default API Domain
|--------------------------------------------------------------------------
|
| A default domain to use for your API routes so you don't have to
| specify it for each group.
|
*/
'domain' => env('API_DOMAIN', 'api.trackye.com'),
/*
|--------------------------------------------------------------------------
| Name
|--------------------------------------------------------------------------
|
| When documenting your API using the API Blueprint syntax you can
| configure a default name to avoid having to manually specify
| one when using the command.
|
*/
'name' => env('API_NAME', 'trackye_api'),
/*
|--------------------------------------------------------------------------
| Conditional Requests
|--------------------------------------------------------------------------
|
| Globally enable conditional requests so that an ETag header is added to
| any successful response. Subsequent requests will perform a check and
| will return a 304 Not Modified. This can also be enabled or disabled
| on certain groups or routes.
|
*/
'conditionalRequest' => env('API_CONDITIONAL_REQUEST', true),
/*
|--------------------------------------------------------------------------
| Strict Mode
|--------------------------------------------------------------------------
|
| Enabling strict mode will require clients to send a valid Accept header
| with every request. This also voids the default API version, meaning
| your API will not be browsable via a web browser.
|
*/
'strict' => env('API_STRICT', false),
/*
|--------------------------------------------------------------------------
| Debug Mode
|--------------------------------------------------------------------------
|
| Enabling debug mode will result in error responses caused by thrown
| exceptions to have a "debug" key that will be populated with
| more detailed information on the exception.
|
*/
'debug' => env('API_DEBUG', true),
/*
|--------------------------------------------------------------------------
| Generic Error Format
|--------------------------------------------------------------------------
|
| When some HTTP exceptions are not caught and dealt with the API will
| generate a generic error response in the format provided. Any
| keys that aren't replaced with corresponding values will be
| removed from the final response.
|
*/
'errorFormat' => [
'message' => ':message',
'errors' => ':errors',
'code' => ':code',
'status_code' => ':status_code',
'debug' => ':debug',
],
/*
|--------------------------------------------------------------------------
| API Middleware
|--------------------------------------------------------------------------
|
| Middleware that will be applied globally to all API requests.
|
*/
'middleware' => [
],
/*
|--------------------------------------------------------------------------
| Authentication Providers
|--------------------------------------------------------------------------
|
| The authentication providers that should be used when attempting to
| authenticate an incoming API request.
|
*/
'auth' => [
],
/*
|--------------------------------------------------------------------------
| Throttling / Rate Limiting
|--------------------------------------------------------------------------
|
| Consumers of your API can be limited to the amount of requests they can
| make. You can create your own throttles or simply change the default
| throttles.
|
*/
'throttling' => [
],
/*
|--------------------------------------------------------------------------
| Response Transformer
|--------------------------------------------------------------------------
|
| Responses can be transformed so that they are easier to format. By
| default a Fractal transformer will be used to transform any
| responses prior to formatting. You can easily replace
| this with your own transformer.
|
*/
'transformer' => env('API_TRANSFORMER', Dingo\Api\Transformer\Adapter\Fractal::class),
/*
|--------------------------------------------------------------------------
| Response Formats
|--------------------------------------------------------------------------
|
| Responses can be returned in multiple formats by registering different
| response formatters. You can also customize an existing response
| formatter.
|
*/
'defaultFormat' => env('API_DEFAULT_FORMAT', 'json'),
'formats' => [
'json' => Dingo\Api\Http\Response\Format\Json::class,
],
];
le fichier de routes
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
$api = app('Dingo\Api\Routing\Router');
Route::get('/', function () {
return view('welcome');
});
$api->version('v1', function($api){
$api->get('hello', 'App\Http\Controllers\HomeController@index');
});
//dump($api);
//die();
mon controller
class HomeController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index() {
return 'hello';
}
Mais je reçois cette erreur lorsque je lance l'url: localhost:8000/hello
Sorry, the page you are looking for could not be found.
NotFoundHttpException in RouteCollection.php line 161:
comment faire? mais avant j'ai tapez la commande artisan serve. pour utiliser l'url localhost:8000/ qui lui marche bien et me dirige à la page Welcome mais parcontre lorsque je fait un localhost:8000/api/hello, cela me donne l'erreur ci-dessus
J'essaye de faire l'exemple du formulaire dans la première partie du cours Découvrer le framework PHP avec laravel. Cependant, je fais exactement comme l'enseignant et je ne comprend pas pourquoi j'obtiens cette erreur.
J'ai essayé plusieurs façon, en utilisant blade ou non en prenant la façon originale du formulaire ou non. Cependant ça ne fonctionne toujours pas.
Aussi, lorsque j'essaye de faire afficher la page de l'activité 1, j'obtiens toujours un message d'erreur. Je n'arrive pas a faire afficher les sondages.
Voici le message d'erreur :
J'aimerais bien pouvoir continuer le cours.
Merci d'avance pour votre aide.
- Edité par MagalieLanthier 7 juillet 2017 à 16:52:04
J'essaye de faire l'exemple du formulaire dans la première partie du cours Découvrer le framework PHP avec laravel. Cependant, je fais exactement comme l'enseignant et je ne comprend pas pourquoi j'obtiens cette erreur.
Aussi, lorsque j'essaye de faire afficher la page de l'activité 1, j'obtiens toujours un message d'erreur. Je n'arrive pas a faire afficher les sondages.
Voici le message d'erreur :
J'aimerais bien pouvoir continuer le cours.
Merci d'avance pour votre aide.
- Edité par MagalieLanthier 7 juillet 2017 à 16:52:04
Bonjour Magalie,
Je pense queton formulaire infos.blade.php devrait être plutot écrit comme cela:
Je suis actuellement le cours laravel sur openclassroom. Je suis arrivé à l'activité créer un site de sondage. Je télécharge le zip pour faire l'exercice, je remarque qu'il manque le dossier "vendor".
( ! )Warning: require(C:\wamp64\www\partie1_exo\bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in C:\wamp64\www\partie1_exo\bootstrap\autoload.php on line17
bonjour, j'aimerais insérer les données d'un formulaire d'article mais ce dernier imbrique le formulaire d'image, autrement dit j'aimerais que, lors de la validation du formulaire que l'id de l'image s'insère dans la table article et que les données de l'image s'insère dans la table image. voici mon code
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Image extends Model {
protected $fillable = [
'url',
];
public function user(){
return $this->hasOne(User::class);
}
public function article(){
return $this->hasOne(Post::class);
}
public function product(){
return $this->hasOne(Product::class);
}
}
Mon Model Post
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model {
protected $fillable = ['title','slug','content','publication', 'counts_comment' ,'category_id', 'user_id', 'image_id'];
public static function boot() {
parent::boot();
self::created(function ($post){
$post->counts_comment = 0;
});
self::deleted(function ($post){
$comments = $post->comments;
foreach ($comments as $comment){
$comment->delete();
}
});
return true;
}
public function user() {
return $this->belongsTo(User::class);
}
public function comments() {
return $this->hasMany(Comment::class);
}
public function competences() {
return $this->belongsToMany(Competence::class, 'post_competence' )->withPivot('niveau');
}
public function category() {
return $this->belongsTo(Category::class);
}
public function image(){
return $this->belongsTo(Image::class);
}
j'ai ce message
(1/1) ErrorException
Trying to get property of non-object
in PostController.php (line 71)
at HandleExceptions->handleError(8, 'Trying to get property of non-object', 'C:\\laragon\\www\\Project\\app\\Http\\Controllers\\Admin\\PostController.php', 71, array('request' => object(Request), 'formInput' => array('_token' => 'EsEncJV7Ux0gGxTSuKQzEy0IbL9ViA58xscvTaKk', 'title' => 'sjhbmkfgjhbmshsmfhsg', 'content' => 'mflgjhkmhjmthkjmty', 'user_id' => null, 'category_id' => '2', 'competence_id' => '1'), 'image' => null, 'user_id' => 4))
in PostController.php (line 71)
Salut, tu sors d'où la propriété image_id car je ne l'ai pas vu dans le formulaire, dis moi si je me trompe et ensuite je te conseillerai d'upload l'image et à la place d'avoir image_id dans l'entité, tu devrais mettre image_path par exemple avec le chemin de l'image ce sera mieux par la suite tu verras, si tu comptes faire un site qui transfère beaucoup d'image tu devras toutefois revoir ce processus.
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." - Les Shadoks
je suis le tuto Laravel 5, j'en suis au chapitre sur ajax. J'ai installé la version 5.4.
Tout fonctionne comme prévu, sauf le logout ! Quand je clique sur le nom du user (à l'intérieur du lien qui porte la classe dropdown toggle), le dropdown menu ne se déplie pas !
Pour que cela fonctionne je suis obligée de commenter dans le layout app.blade.php le script 'bootstrap.min.js' ...
Bonjour je suis entrain de réaliser un site d'ecommerce des templates, mais je suis bloquer à un niveau, je ne sais pas comment implémenter un système de demo. à savoir que lorsque l'on veut payer un template, que l'on ai la possibilité de voir la demo de ce template, ou l'acheter directement, mais lorsque l'on visite ça demo que l'on ait la possibilité de payer cette demo en la visitant. Exemple le fonctionnement du site suivant https://wrapbootstrap.com. la question est-ce chaque demo est intégrer dans le site à la main ou alors on upload ce template via l'application pour que chaque session soit unique et identifiable, ainsi on peut garder l'id du produit dans une session et pouvoir l'utiliser dans lors de la navigation de la demo afin d'effectuer le payement pendant la navigation de la demo. Mais ce système je ne vois pas comment pouvoir implémenter cela avec laravel et tout autre langage d'ailleurs.
Si quelqu'un pourrais m'indiquer comment faire ou plus encore à un lien qui montre comment le faire étape par étape. se serait un plaisir.
Salut, je suis sur le tuto laravel, et j'ai un problème avec l'update des données du tuto, il ne fait aucune mise à jour. Voici mon code
voici mes routes:
//route affichage des données d'un utilisateur
Route::get('/user/{id}', 'UpdatePasswordController@show')->name('show.user');
//route affichage du formulaire d'édition
Route::get('/user/{id}/edit', 'UpdatePasswordController@edit')->name('edit.user');
//route de modification du formulaire d'édition
Route::put('/user/{id}', 'UpdatePasswordController@updateUser')->name('update.user');
les méthodes du controller
public function show($id){
$user = $this->userRepository->getById($id);
return view('auth.profil', compact('user'));
}
public function edit($id) {
$user = $this->userRepository->getById($id);
return view('auth.edit', compact('user'));
}
public function updateUser(UserUpdateRequest $request, $id){
$this->userRepository->update($id, $request->all());
return redirect('home')->withOk("L'utilisateur " . $request->input('name') . " a été modifié.");
}
Mon repository user
class UserRepository {
protected $user;
public function __construct(User $user) {
$this->user = $user;
}
private function save(User $user, Array $inputs) {
$user->name = $inputs['name'];
$user->email = $inputs['email'];
$user->admin = isset($inputs['admin']);
$user->save();
}
public function getPaginate($n) {
return $this->user->paginate($n);
}
public function store(Array $inputs) {
$user = new $this->user;
$user->password = bcrypt($inputs['password']);
$this->save($user, $inputs);
return $user;
}
public function getById($id) {
return $this->user->findOrFail($id);
}
public function update($id, Array $inputs) {
$this->save($this->getById($id), $inputs);
}
public function destroy($id) {
$this->getById($id)->delete();
}
}
Ma classe de validation
class UserUpdateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules() {
$id = $this->user;
return [
'name' => 'required|max:255|unique:users,name,',
'email' => 'required|email|max:255|unique:users,email,'
];
}
}
dans le chapitre "migrations et modèles" tout est très clair, cependant j'ai du mal à comprendre, la syntaxe : new$this->email.
Ce code se trouve dans le repository EmailRepository, classe de gestion de notre modèle email, plus précisément dans la méthode save.
Dans le repository on utilise dans le constructeur l'injection de dépendance, donc $this->email est une instance de notre modèle.
Pourquoi faire un new devant un objet déjà instancié ??? Je suis perplexe, si quelqu'un a compris je veux bien qu'il m'éclaire !
<?php
namespace App\Repositories;
use App\Email;
class EmailRepository implements EmailRepositoryInterface
{
protected $email;
public function __construct(Email $email)
{
$this->email = $email;
}
public function save($mail)
{
$email = new $this->email;
$email->email = $mail;
$email->save();
}
}
je suis en train d'étudier l'exemple fourni dans le chapitre 3 sur les événements (@bestmomo : merci pour cet exemple très complet). Je me rends compte que je n'ai pas très bien compris les middlewares. Je prends un exemple, et je vous déroule ce que j'ai compris, dites moi ou je bugue, svp !
Je suis loguée en tant que simple user. J'ai réagi à un article en soumettant un commentaire. Je souhaite maintenant le supprimer. La suppression se passe comme prévu. Dans le code, cette action correspond à la route comment.destroy. Pourtant, quand je regarde dans le constructeur de la classe CommentController, je ne devrais pas pouvoir réaliser cette action. Voici ce que je comprends :
Quand la requête est envoyée, le premier middleware, admin est appelé, comme ma méthode est dans le tableau des exceptions, la requête continue et rencontre le deuxième middleware 'auth', comme je suis authentifiée et que ma méthode est bien dans le tableau, la requête n'est pas stoppée et atteint le dernier middleware et là ... je bloque ... ma requête est une requête ajax ... et elle ne figure pas dans le tableau ... elle devrait donc être blackboulée ??? Non ? J'ai râté un truc ???
Je viens de démarrer ce coura avec une version Laravel 5.4
A la leçon migrations et modèles j'ai une erreur : App\Repositories\EmailRepositoryInterface] is not instantiable. quand j'essaie d'iutiliser l'interface EmailRepositoryInterface.
J'ai checké les fautes d'orthorgraphe mais je n'en trouve pas. Tout est OK quand j'insta,,cie la classe (deuxième option) mais pas quand j'instancie l'interface.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.