Why is artisan make:controller not making controllers? - laravel

$ artisan make:controller fooController
Controller created successfully.
A controller is not created under app\Http\Controllers and git status does not show any changes. Running the command a second time returns "Controller already exists!" artisan make:model Foo works fine as does creating a controller by hand, but that's not really fun. What am I missing?
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
The workstation is Windows and there do not seem to be any permission problems.
Edit: Tried running composer update, same result.

Rename your controller name using capital on the first letter:
artisan make:controller FooController
Also, according to Laravel naming convention, you don't have to add Controller at the end of the controller name. Use this instead:
artisan make:controller Foo
make sure your controller name is in singular form
For Example:
php artisan make:model Supplier --migration --controller
will produce:
-Controller named: SupplierController.php
-Model named: Supplier.php
-Migrations named: 2017_06_17_161642_create_suppliers_table.php (laravel automatically change it into plural form)
Also, try checking your laravel version using: php artisan --version
and make sure its 5.4.xx
if not, update your laravel using composer update

Related

Is there a way of set the name of the controller differently when using the -c option for making a model?

When doing php artisan make:model Post -mc the resulted naming convention will be:
model: Post
migration file: ...create_posts_table
controller: PostController
Is there a way of setting the name of the controller to PostsController (plural) when doing the artisan command?

Laravel - create model, controller and migration in single artisan command

I can create a model and resource controller (binded to model) with the following command
php artisan make:controller TodoController --resource --model=Todo
I want to also create a migration with the above command, is it possible?
You can do it if you start from the model
php artisan make:model Todo -mcr
if you run php artisan make:model --help you can see all the available options
-m, --migration Create a new migration file for the model.
-c, --controller Create a new controller for the model.
-r, --resource Indicates if the generated controller should be a resource controller
Update
As mentioned in the comments by #arun in newer versions of laravel > 5.6 it is possible to run following command:
php artisan make:model Todo -a
-a, --all Generate a migration, factory, and resource
controller for the model
Updated
Laravel 6 or Later
Through the model
To Generate a migration, seeder, factory and resource controller for the model
php artisan make:model Todo -a
Or
php artisan make:model Todo -all
Other Options
-c, --controller Create a new controller for the model
-f, --factory Create a new factory for the model
--force Create the class even if the model already exists
-m, --migration Create a new migration file for the model
-s, --seed Create a new seeder file for the model
-p, --pivot Indicates if the generated model should be a custom intermediate table model
-r, --resource Indicates if the generated controller should be a resource controller
For More Help
php artisan make:model Todo -help
Hope Newbies will get help.
You can do it with the following command:
php artisan make:model post -mcr
Brief :
-m, to create migration
-c to create controller
-r to specify the controller has resource
You can make model + migration + controller, all in one line, using this command:
php artisan make:model --migration --controller test
Short version: php artisan make:model -mc test
Output :-
Model created successfully.
Created Migration:2018_03_10_002331_create_tests_table
Controller created successfully.
If you need to perform all CRUD operations in the controller then use this command:
php artisan make:model --migration --controller test --resource
Short version: php artisan make:model -mc test --resource
php artisan make:model PurchaseRequest -crm
The Result is
Model created successfully.
Created Migration: 2018_11_11_011541_create_purchase_requests_table
Controller created successfully.
Just use -crm instead of -mcr
php artisan make:model Author -cfmsr
-c, --controller Create a new controller for the model
-f, --factory Create a new factory for the model
-m, --migration Create a new migration file for the model
-s, --seed Create a new seeder file for the model
-r, --resource Indicates if the generated controller should be a resource controller
Laravel 5.4 You can use
php artisan make:model --migration --controller --resource Test
This will create
1) Model
2) controller with default resource function
3) Migration file
And Got Answer
Model created successfully.
Created Migration: 2018_04_30_055346_create_tests_table
Controller created successfully.
We can use php artisan make:model Todo -a to create model, migration, resource controller and factory
You don't need to add --resource flag just type the following and laravel will create the whole desired resources
php artisan make:controller TodoController --model=todo
Instead of using long command like
php artisan make:model <Model Name> --migration --controller --resource
for make migration, model and controller, you may use even shorter as -mcr.
php artisan make:model <Model Name> -mcr
For more MOST USEFUL LARAVEL ARTISAN MAKE COMMANDS LISTS
If you are using Laravel as an only API add --api option:
php artisan make:model Post -a --api
To make mode, controllers with resources, You can type CMD as follows :
php artisan make:model Todo -mcr
or you can check by typing
php artisan help make:model
where you can get all the ideas
You can use -m -c -r to make migration, model and controller.
php artisan make:model Post -m -c -r
To make all 3: Model, Controller & Migration Schema of table
write in your console: php artisan make:model NameOfYourModel -mcr
How I was doing it until now:
php artisan make:model Customer
php artisan make:controller CustomersController --resource
Apparently, there’s a quicker way:
php artisan make:controller CustomersController --model=Customer
php artisan make:model modelname -mcr
to create model. Here -mcr stands for migrations components and resourses

Laravel 5.4 - Artisan make:controller XxxController --resource --model=Xxx not identifying Model driectory genereted by reliese/laravel

I have a database that already is in use when I started a new API in Laravel 5.4.
For this reason, instead of use Migrations, I have used reliese/laravel to generate the Models from my database.
The point is that reliese have created models inside app/Models/. So I have a table that was converted into app/Models/City.php for example.
So when I try to create a Controller using Artisan like this:
php artisan make:controller CityController --resource --model=City
I get this error:
A App\City model does not exist. Do you want to generate it? (yes/no) [yes]:
Because Artisan is searching the Model City.php inside app/ folder.
Is there a way to make Artisan to point to app/Models instead?
This is more elegant
php artisan make:controller CityController --resource --model=Models/City
I will share here what I did:
php artisan make:controller CityController --resource --model=Models\\City
Controller created successfully.
I had to use double backslash "\" without the app\ folder.

making model and migration with a single command in laravel 5.2

I've tried this artisan command as I followed a tutorial
php artisan make:model Foo -m
but I get this error:
exception 'RuntimeException' with message 'The "-m" option does not exist.'
why It's not recognizing that?
If It's a wrong way to do It , what the right one?
In short, this is how you do it.
C:\xampp\htdocs\lms>php artisan make:model Test -m
Model created successfully.
Created Migration: 2016_08_29_160434_create_tests_table
It must work. If that does not, do.
C:\xampp\htdocs\lms>composer install.
and that should work.

How to use artisan to make views in laravel 5.1

I have been looking in the docs for a solution to make views with basic CURD operations but without much success.
I guess this might be pretty simple, but am missing something or not looking hard enough.
i can make models and controllers using the below artisan commands
php artisan make:model modelName
php artisan make:controller controllerName
But how do we make the basic CURD views. something like
php artisan make:views
cant find any doc for this. Please help
At the time of writing, there isn't a way to create views via artisan without writing your own command or using a third party package. You could write your own as already suggested or use sven/artisan-view.
if you are using laravel 5.1 or 5.2 this gist can help you make:view command just create command copy and paste the code from gist.
Step 1:
php artisan make:command MakeViewCommand
Step 2:
copy class from this gist
https://gist.github.com/umefarooq/ebc617dbf88260db1448
Laravel officially doesn't have any Artisan cammands for views.
But you could add third party plugins like Artisan View
Here's the link Artisan View
After adding this plugin to your project by the guide provided here you should be able to perform following cammands :
Create a view 'index.blade.php' in the default directory
$ php artisan make:view index
Create a view 'index.blade.php' in a subdirectory ('pages')
$ php artisan make:view pages.index
Create a view with a different file extension ('index.html')
$ php artisan make:view index --extension=html
There is very easy way to create a view(blade) file with php artisan make:view {view-name} command using Laravel More Command Package.
First Install Laravel More Command
composer require theanik/laravel-more-command --dev
Then Run
php artisan make:view {view-name}
For example
It create index.blade.php in resource/views directory
php artisan make:view index
It create index.blade.php in resource/views/user directory
php artisan make:view user/index
Thank you.
In v5.4 you need to create the command with:
php artisan make:command MakeView
and before you can use it, it must be registered in App/Console/Kernel like
protected $commands = [
Commands\MakeView::class
];
then you make a view like: php artisan make:view posts/create
To create a view (blade) file through command in laravel 8:
composer require theanik/laravel-more-command --dev
php artisan make:view abc.blade.php
You can install sven/artisan-view package to make view from CMD, to install package write this command:
composer require sven/artisan-view --dev
After installing it, you can make a single view or folder with all views that contain {index-create-update-show}
To make a single file we using this command:
php artisan make:view Name_of_view
For example
php artisan make:view index
To make a folder that contain all resources index - create - update - show write name of folder that contain all this files for example:
php artisan make:view Name_of_Folder -r
For example:
php artisan make:view blog -r
-r is a shorthand for --resource you can write full name or shorthand to make resource.
you can extend yields from master page if master page inside in directory layouts we write command sith this format
php artisan make:view index --extends=layouts.master --with-yields
layouts is a directory this directory may be with a different name in your project the idea is name_of_folder/master_page that you want to extend yields from it.
For more view docs

Resources