Skip to content

[FrameworkBundle] allow to reference files directly from kernel.root_dir #21231

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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 10, 2017

Conversation

fabpot
Copy link
Member

@fabpot fabpot commented Jan 10, 2017

Q A
Branch? master
Bug fix? no
New feature? yes
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets n/a
License MIT
Doc PR n/a

While working on a bundleless app, I want to be able to reference a directory for routing annotations like this:

app:
    resource: "../src/Controller/"
    type: annotation

but that does not work because Symfony expects a bundle resource (@AppBundle...) or a directory referenced from the main app Resources directory. But as I don't have such a directory, even using ../../src/Controller does not work.

So, I propose to add the %kernel.root_dir% to the list of allowed directories.

By the way, we don't have the same issue with the routing annotation file loader as it does not use the locator for whatever reason. Should we fix it?

@fabpot fabpot merged commit 80b61e9 into symfony:master Jan 10, 2017
fabpot added a commit that referenced this pull request Jan 10, 2017
…om kernel.root_dir (fabpot)

This PR was merged into the 3.3-dev branch.

Discussion
----------

[FrameworkBundle] allow to reference files directly from kernel.root_dir

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

While working on a bundleless app, I want to be able to reference a directory for routing annotations like this:

```yaml
app:
    resource: "../src/Controller/"
    type: annotation
```

but that does not work because Symfony expects a bundle resource (`@AppBundle...`) or a directory referenced from the main app `Resources` directory. But as I don't have such a directory, even using `../../src/Controller` does not work.

So, I propose to add the %kernel.root_dir% to the list of allowed directories.

By the way, we don't have the same issue with the routing annotation **file** loader as it does not use the locator for whatever reason. Should we fix it?

Commits
-------

80b61e9 [FrameworkBundle] allowed to reference files directly from kernel.root_dir
@dunglas
Copy link
Member

dunglas commented Jan 10, 2017

ping @theofidry. We already stumbled on that, this patch will definitely help.

@theofidry
Copy link
Contributor

Indeed, cf. symfony/symfony-docs#7228

@theofidry
Copy link
Contributor

@dunglas not sure this solve the issue completely though, as mine was due to removing app/Resources completely

@fabpot
Copy link
Member Author

fabpot commented Jan 10, 2017

@theofidry I don't have an app/Resources/ directory either, and that what is fixed here as well. app/Resources/../src/... works well (by chance again) when there is an app/Resources directory, but does not work as soon as you remove it (this PR fixes that).

@theofidry
Copy link
Contributor

👍 perfect then, it gave me a lot of trouble so thanks for it

@stof
Copy link
Member

stof commented Jan 13, 2017

Shouldn't the path be relative to the location of the current file instead, to be consistent with other places in Symfony

@Tobion
Copy link
Contributor

Tobion commented Jan 18, 2017

I agree with @stof that this makes more sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants