J'ai une page d'état de déclenchement et je souhaite émettre le statut du voyage.
Je stocke des valeurs numériques dans la base de données sur la création du voyage. P>
Statut valeurs : strong> p> Ceci est mon état de fonctionnement actuel si l'instruction: strong> je veux simplement simplifier cela em> p> < Strong> Pour simples oui ou non si des déclarations que je peux faire cela: strong> p> Comment puis-je prendre la logique simple oui ou non et l'appliquer à mon plus grand
Sélectionnez Boîte si la déclaration? P>
blockQuote> p>
$ destination-> privé code> = 0 pour no & 1 pour oui p> < Pré> xxx pré>
4 Réponses :
@switch code> est fait pour cela:
Vous ne pouvez pas simplifier un conditionnel avec 5 séparé si / sinon est dans un ternaire à distance lisible à distance.
Premièrement, je ne lierais pas votre vue sur les chiffres qui représentent vos statuts. Considérez des méthodes sur votre utilisez-les à votre vue p> tandis que cela ne simplifie pas votre conditionnel, c'est beaucoup Nettoyant que nécessaire pour garder une trace de quelle valeur entière correspond à quel statut. p> Vous pouvez également envisager un décorateur de modèle comme laracast / présentateur . p> pousse cette logique conditionnelle dans une classe de présentatrice. p> alors dans votre vue, vous pouvez vraiment Simplifier les choses: p> de la classe code>. Par exemple: p>
Merci pour les beaux conseils ici. Je vais me référer à cela lorsque je reviens et refacteur.
Vous pouvez essayer ceci car il devrait correspondre à vos déclarations si elles sont à la ternaire forme (bien que quelque peu déroutant): p>
$ destination-> Statut% 2 == 0? ($ destination-> statut == 0? 'À l'heure': ($ de destination-> Status == 2? 'retardé': 'annulé')): ($ destination-> Statut == 1? 'En attente': 'Complété'); code> p>
À partir de cette même page: " Il est recommandé d'éviter" empiler "expressions ternaires. I>" et oui, a l'air un peu déroutant;)
L'empilement sûr des déclarations ternaires est une question d'opinion; Certains vont discuter de ne jamais le faire, d'autres diront que cela aussi longtemps que vous pouvez le lire, et cela fonctionne, alors pourquoi pas? Je suis d'avis que tout ce qui est au-dessus de 2 déclarations devrait probablement être un commutateur code> ou si ... eleif ... code> bloc, mais oui.
Cela fonctionne, mais oui, vraiment déroutant sur ce qui se passe à première vue. Merci de me montrer une autre façon.
Dans ce bloc de code, le premier Ceci peut simplement être remplacé par: p> aussi longtemps que $ destination-> Statut Code> avec $ clé code> (0 à 4, en fonction du tableau) : $ Status code> est un tableau contenant Les différentes étiquettes ("à l'heure", "en attente", etc.) Ce code affiche l'état actuel en tant qu'option sélectionnée par défaut, sans option de duplication et permettant de sélectionner normalement. P> P>
Merci de m'aider à travailler à travers cela. C'est presque mon tableau exact: $ Statut = ['à l'heure', 'En attente', "retardé", "Terminé", "ANNULÉ"]; code> dans mon contrôleur. C'était bien expliqué et a bien fonctionné. Tellement plus propre aussi! Merci!
De rien! Cela ressemble à beaucoup d'approches que je dois faire, mais je sauvey mon tableau dans un fichier de traduction ( ressources / lang / fr / status.php code> dans cet exemple), puis faites simplement @foDeach (__ ("statut") as $ clé => $ valeur) ... @endForeach code>
Jetez un coup d'œil à HTML LaravelCollective - Cela peut le faire élégamment et peut-être rendre votre vie beaucoup plus facile.
Donc, une question différente, quel est le point de délivrer cela dans un élément
code>? Donnez-vous à l'utilisateur l'option de modifier ce statut? Dans ce cas, vous produirez 5 options (à l'aide d'un@for ($ i ...) code> boucle), vérifiez la valeur de$ i code> et sortie l'étiquette correcte et références croisées$ destination-> Status Code> vs$ i code> Pour définir l'une des options commesélectionné code>. Si vous ne faites pas cela, cela tombe sous Bad-UI; Fourniture d'un élémentHey @timlewis, ceci est pour mettre à jour le statut de voyage dans ma zone d'administration. Pas pour un usage public.
Question reste toujours; Peu importe qui l'utilisateur est (utilisateur d'administrateur VS final), si vous avez un SELECT qui ne vous permet pas de sélectionner quoi que ce soit, il n'a pas beaucoup de sens :)
@Tim désolé je n'ai pas ajouté cela parce que ce n'était pas pertinent pour ma question. L'utilisateur peut effectuer des sélections ....
@foForeach ($ Status comme $ key => $ valeur)Cela me semble assez pertinent; Si
$ clé code> est 0 à 4 et la valeur est une chaîne code> contenant le "à l'heure", "en attente", etc., il n'y a pas besoin de la@IF () Code> Déclaration du tout. Vous feriez simplement@Im vous avez raison, cela était complètement pertinent que je l'ai ajouté à ma question.
Vous souhaitez donc avoir 1
@Timlewis oui c'est exactement ce que j'essaie de faire. Montrez l'état actuel et laissez l'utilisateur de le modifier si une mise à jour est nécessaire.
Haha j'ai deviné autant. Je vais écrire une réponse pour illustrer ce que je veux dire.