What's the point of subfolders in src folder - symfony

I need to create three folders in my project. In each of them I'd have to create a couple of subfolders containing proper classes.
So what is the point of creating a subfolder for all bundles in the SRC folder?
I mean, I'm dividing my project into Folder1Bundle, Folder2Bundle etc...So the folder structure would be:
src/ProjectName/Folder1Bundle
src/ProjectName/Folder2Bundle
etc.
And the src folder will contain only ProjectName folder...What's the point of creating big folders for bundle folders, instead of putting all bundles directly into the SRC folder?

Take a look in the best practices for structuring bundles.
A bundle is also a PHP namespace. The namespace must follow the technical interoperability standards for PHP 5.3 namespaces and class names: it starts with a vendor segment, followed by zero or more category segments, and it ends with the namespace short name, which must end with a Bundle suffix.
So the vendor name (ProjectName in your case) is for structuring namespace and get no conflicts with naming of other namespaces and symfony bundles.
Oh, and very important, the directory structure reflects your php namespace 1:1

Related

Silverstripe v4 MVC Directories?

I'm Wondering Why There is no "Models / Views / Controllers" Directories Inside SS4 Main Directory? It's Seems Like Everything Should Go Inside "mysite/code" .. How To Accomplish MVC Style?
MVC is more of a software-architectural pattern, not how you organize files. There are only a few assumptions the SilverStripe framework makes on how you should organize your code:
Model
With SilverStripe 4, the default code folder for every module is named src or code. In that folder you're free to organize your files as you see fit. Ideally you build your folder structure in a PSR-4 compliant way, so that your folder-names match with your namespaces.
Controllers
Same as with Model classes, you can put your controllers anywhere you want.
There's a default assumption for Page classes though. These expect that the matching controller has the same namespace as the page. So if your page is named: Company\Module\Pages\MyPage, the framework would look for Company\Module\Pages\MyPageController.
You're free to override that though, by implementing the getControllerName method on your Page and return the FQCN for the controller to use.
Views
Also known as "templates" should be in a templates folder. Each module (your mysite folder is also a module) can have a templates folder.
In addition to this, you can have themes. Themes usually bundle templates, css and other assets. In the themes folder you can have multiple theme folders, each one can have a templates folder.

Organizing assets in Symfony3

I still have some problems to handle my assets in symfony. The best practices say, I should store my assets in web/.
But I dont like to store my raw sass files there, because its a public folder and I think only compiled or static files should be stored there.
Thats why I store them (js and sass) currently in app/Resources. And my assetic.read_from is app/Resources. But then there are some bundles, that are symlinked by assets:install to web/bundles/.
And now, when I want to include this bundle-assets in my twig files, I have to go there by ../../web/bundles/.. in the stylesheets block. That doesnt look very clean, so I did a symlink app/Resources/bundles->web/bundles/ and that works.
But I still think its too much fiddle and I would like to know if there is a cleaner way that better collects my assets in one place.
Don't use AsseticBundle, it was even removed in default symfony-standard 2.8. Managing frontend assets with php is workaround for someone who really don't want to use "the right tools"
I personally keep my source files in /assets/ and with Grunt JS I compile them to /web/assets/ which later is served from assets.somedomain.com through CDN
2 years ago I wrote post about managing assets with symfony, it's still valid and up to date. You might want to check it out.
http://konradpodgorski.com/blog/2014/06/23/better-way-to-work-with-assets-in-symfony-2/
I should extend post by things I learned since then but always not enough time :)
I don't see why you can't use web/ folder for your assets.
I often work with less and other file format which are afterward processed and minified.
The solution to your problem seems simple to me: Use two folder in the web/ folder.
The first folder would be your source/ folder. In which you would place all your sass files. You will add a .htaccess file to this same folder, and deny all access (you can copy from the .htaccess file in the src/ folder).
Then a second folder, lets call it assets which will hold all your compiled and minified assets.
That should do the trick... ;)
You may be interested in this topic as well. It may help to hide futher the existence of your source/ folder. ;)
If you really don't want to have your sources files in the web/ folder, then loot at this, it should help you place your sources files in your bundle.

Xcode static library appears twice

I added the OCMock static library in Xcode with some header files.
I'm not sure what's changed since I added it but the file now appears twice in the Project Navigator - once at the top level and once under the usr/lib folders.
How do I get rid of the second (highlighted) listing?
It looks like you added OCMock's whole "usr" folder via a folder reference, most likely by accident.
You have three choices for a solution:
1)
Remove the "usr" folder from your list of files & folders in your project, and re-add just the "include" folder via folder reference (I'm presuming you want to use the folder reference so you can pick up the latest header files that are in there?).
2)
Add the required header files to your project directly (i.e. not using the folder reference).
3)
Or get rid of the first "libOCMock.a" library and just rely on the folder reference to pick up the static library living under the "usr" hierarchy.

What is the best place of main assets declared in `base.html.twig`

Each bundle has it's own public directory to store assets (css/js/images).
Now what is the best place for assets used in app\Resources\views\base.htl.twg?
How dose Symfony understand to populate them to public?
usually the assets of templates available in the app/Resources/view directory(like base.html.twig) are placed directly in a subdirectory of the web root like web/includes/css/main.css and called with asset('includes/css/main.css').
If you don't like it, you can easily create your own bundle to store the app assets.
I suggest you to create a DesignBundle to store all base template and assets. This method permit you to share your configuration with other application.

Xcode 4 project template adds extra folder

When I make a new project with xc4 I don't want it to create a folder with the same name as the project. I want the source files associated with a project template to get copied into several other folders that sit next to the project.
In the TemplateInfo.plist, I can specify which files to copy through the Definitions and Nodes arrays. In the Definitions, if I make the name ../Example.cpp then it will copy the file into the directory with the project rather than into the folder that has the project's name, which is what I want. But, if i delete that empty folder then xcode can no longer find any files because all files had to be specified relative to the auto-created folder.
Does anyone know how to get around this? Is there some way to specify which folder project files should be relative to? Or perhaps some other way to specify relative paths for files in a project template?

Resources