Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[Form] use a choice label normalizer instead of violating ChoiceListFactoryInterface::createView#32955

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Closed

Conversation

@Tobion
Copy link
Contributor

QA
Branch?3.4
Bug fix?no
New feature?no
BC breaks?no
Deprecations?no
Tests pass?yes
Fixed tickets
LicenseMIT
Doc PR

Continuation of#32935 which offers a slightly different implementation of#17798
This way,'choice_label' => false does not need to be passed to\Symfony\Component\Form\ChoiceList\Factory\ChoiceListFactoryInterface::createView which violates@param callable|null $label. So we can add a real callable type in#32237

…mponent\Form\ChoiceList\Factory\ChoiceListFactoryInterface::createView params

$choiceLabelNormalizer =function (Options$options,$choiceLabel) {
if (false ===$choiceLabel) {
returnfunction () {
Copy link
Member

@ycerutoycerutoAug 5, 2019
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I afraid we can't do this here, because you'll break things for people relying on thefalse value, e.g.false === $options['choice_label'].

vudaltsov reacted with thumbs up emoji
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I don't think that counts otherwise we would not be able to add or change any form option. But I'm fine to merge this PR to 4.4 only.

Copy link
Member

@ycerutoycerutoAug 5, 2019
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

we have (since 4.2) the->setDeprecated() method to deprecate any form option before removing it or changing its value.

Tecnically this would look like a BC break to me.

HeahDude reacted with thumbs up emoji
Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

What do you propose?

Copy link
Member

@ycerutoycerutoAug 5, 2019
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I guess deprecating to passfalse to thecreateView method and make the normalization tocallable before calling it, I only found one occurence:ChoiceType::createChoiceListView(), but likely must be done for all current implementations ofChoiceListFactoryInterface. Also that should be targeted to 4.4.

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

make the normalization to callable before calling it

Then there is no point in adding a deprecation as false will never be passed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

The point is, it's a public method, hence we can't add thecallable type-hint to the$label argument without adding first a deprecation warning about not passingfalse.

Make the normalization tocallable before calling tocreateView is the intended operation to get rid of the deprecation warning.

Copy link
Member

@ycerutoycerutoAug 5, 2019
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

It will be nice to have?callable $label for consistency with other arguments.
I agree with@yceruto — we should deprecatefalse. I can help with the deprecation if you wish.

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Feel free to take over

@nicolas-grekas
Copy link
Member

Same as in#33074 (comment): I'm for updating the type annotation and declare it as callable|false|null, with proper runtime validation that throws a TypeError when appropriate.

yceruto reacted with thumbs up emoji

@TobionTobion closed thisAug 13, 2019
@TobionTobion deleted the form-choice-label-normalizer branchAugust 13, 2019 02:41
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@ycerutoycerutoyceruto left review comments

+1 more reviewer

@vudaltsovvudaltsovvudaltsov left review comments

Reviewers whose approvals may not affect merge requirements

Assignees

No one assigned

Projects

None yet

Milestone

3.4

Development

Successfully merging this pull request may close these issues.

5 participants

@Tobion@nicolas-grekas@yceruto@vudaltsov@carsonbot

[8]ページ先頭

©2009-2025 Movatter.jp