Support
Quality
Security
License
Reuse
kandi has reviewed blade and discovered the below as its top functions. This is intended to give you an instant insight into blade implemented functionality, and help decide if they suit your requirements.
[x] A new generation MVC framework that doesn't depend on other libraries
[x] Get rid of SSH's bloated, modular design
[x] Source is less than 500kb, learning it is also simple
[x] RESTful-style routing design
[x] Template engine support, view development more flexible
[x] High performance, 100 concurrent qps 20w/s
[x] Run the JAR package to open the web service
[x] Streams-style API
[x] CSRF and XSS defense
[x] Basic Auth and Authorization
[x] Supports plug-in extensions
[x] Support webjars resources
[x] Tasks based on cron expressions
[x] Built-in a variety of commonly used middleware
[x] Built-in JSON output
[x] JDK8 +
Quick Start
<dependency>
<groupId>com.bladejava</groupId>
<artifactId>blade-mvc</artifactId>
<version>2.0.15.RELEASE</version>
</dependency>
HardCode
public static void main(String[] args) {
// Create Blade,using GET、POST、PUT、DELETE
Blade.of()
.get("/user/21", getting)
.post("/save", posting)
.delete("/remove", deleting)
.put("/putValue", putting)
.start();
}
Form Parameters
public static void main(String[] args) {
Blade.of().get("/user", ctx -> {
Integer age = ctx.fromInt("age");
System.out.println("age is:" + age);
}).start();
}
Path Parameters
public static void main(String[] args) {
Blade blade = Blade.of();
// Create a route: /user/:uid
blade.get("/user/:uid", ctx -> {
Integer uid = ctx.pathInt("uid");
ctx.text("uid : " + uid);
});
// Create two parameters route
blade.get("/users/:uid/post/:pid", ctx -> {
Integer uid = ctx.pathInt("uid");
Integer pid = ctx.pathInt("pid");
String msg = "uid = " + uid + ", pid = " + pid;
ctx.text(msg);
});
// Start blade
blade.start();
}
Body Parameters
public static void main(String[] args) {
Blade.of().post("/body", ctx -> {
System.out.println("body string is:" + ctx.bodyToString())
}).start();
}
Parse To Model
public class User {
private String username;
private Integer age;
// getter and setter
}
Get Environment
Environment environment = WebContext.blade().environment();
String version = environment.get("app.version", "0.0.1");
Get Header
@GetRoute("header")
public void getHeader(RouteContext ctx){
System.out.println("Host => " + ctx.header("Host"));
// get useragent
System.out.println("UserAgent => " + ctx.userAgent());
// get client ip
System.out.println("Client Address => " + ctx.address());
}
Get Cookie
@GetRoute("cookie")
public void getCookie(RouteContext ctx){
System.out.println("UID => " + ctx.cookie("UID"));
}
Static Resource
Blade.of().addStatics("/mydir");
Upload File
@PostRoute("upload")
public void upload(Request request){
request.fileItem("img").ifPresent(fileItem -> {
fileItem.moveTo(new File(fileItem.getFileName()));
});
}
Set Session
public void login(Session session){
// if login success
session.attribute("login_key", SOME_MODEL);
}
Render JSON
@GetRoute("users/json")
public void printJSON(RouteContext ctx){
User user = new User("biezhi", 18);
ctx.json(user);
}
Render Text
@GetRoute("text")
public void printText(RouteContext ctx){
ctx.text("I Love Blade!");
}
Render Html
@GetRoute("html")
public void printHtml(RouteContext ctx){
ctx.html("<center><h1>I Love Blade!</h1></center>");
}
Default Template
public static void main(String[] args) {
Blade.of().get("/hello", ctx -> {
ctx.attribute("name", "biezhi");
ctx.render("hello.html");
}).start(Hello.class, args);
}
Jetbrick Template
@Bean
public class TemplateConfig implements BladeLoader {
@Override
public void load(Blade blade) {
blade.templateEngine(new JetbrickTemplateEngine());
}
}
Redirects
@GetRoute("redirect")
public void redirectToGithub(RouteContext ctx){
ctx.redirect("https://github.com/biezhi");
}
Write Cookie
@GetRoute("write-cookie")
public void writeCookie(RouteContext ctx){
ctx.cookie("hello", "world");
ctx.cookie("UID", "22", 3600);
}
Web Hook
public static void main(String[] args) {
// All requests are exported before execution before
Blade.of().before("/*", ctx -> {
System.out.println("before...");
}).start();
}
Logging
private static final Logger log = LoggerFactory.getLogger(Hello.class);
public static void main(String[] args) {
log.info("Hello Info, {}", "2017");
log.warn("Hello Warn");
log.debug("Hello Debug");
log.error("Hello Error");
}
Basic Auth
public static void main(String[] args) {
Blade.of().use(new BasicAuthMiddleware()).start();
}
Change Server Port
Blade.of().listen(9001).start();
Configuration SSL
server.ssl.enable=true
server.ssl.cert-path=cert.pem
server.ssl.private-key-path=private_key.pem
server.ssl.private-key-pass=123456
Custom Exception Handler
@Bean
public class GlobalExceptionHandler extends DefaultExceptionHandler {
@Override
public void handle(Exception e) {
if (e instanceof CustomException) {
CustomException customException = (CustomException) e;
String code = customException.getCode();
// do something
} else {
super.handle(e);
}
}
}
Get Country list from database and get Attempt to read property "country_name" on null
public function countries()
{
return $this->belongsTo(Country::class,'country','id');
}
public function student()
{
return $this->hasMany(Student::class,'country','id');
}
$students = Student::with('countries')->paginate(50);
belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)
-----------------------
public function countries()
{
return $this->belongsTo(Country::class,'country','id');
}
public function student()
{
return $this->hasMany(Student::class,'country','id');
}
$students = Student::with('countries')->paginate(50);
belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)
-----------------------
public function countries()
{
return $this->belongsTo(Country::class,'country','id');
}
public function student()
{
return $this->hasMany(Student::class,'country','id');
}
$students = Student::with('countries')->paginate(50);
belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)
-----------------------
public function countries()
{
return $this->belongsTo(Country::class,'country','id');
}
public function student()
{
return $this->hasMany(Student::class,'country','id');
}
$students = Student::with('countries')->paginate(50);
belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)
How to upload files on laravel and storing it in a directory
'profile_image' => $request->file('profile_image') ? Storage::disk('public')->put('images',$request->profile_image) : null
$url = \Storage::disk('public')->url($user->profile_image)
<form class="user" method="POST" action="{{ route('register.register') }}" enctype="multipart/form-data">
-----------------------
'profile_image' => $request->file('profile_image') ? Storage::disk('public')->put('images',$request->profile_image) : null
$url = \Storage::disk('public')->url($user->profile_image)
<form class="user" method="POST" action="{{ route('register.register') }}" enctype="multipart/form-data">
-----------------------
'profile_image' => $request->file('profile_image') ? Storage::disk('public')->put('images',$request->profile_image) : null
$url = \Storage::disk('public')->url($user->profile_image)
<form class="user" method="POST" action="{{ route('register.register') }}" enctype="multipart/form-data">
Multiselect Box with Laravel and values from database
$prodmulti = explode(',', $prodmulti);
return view('admin.users.edit', compact(['user', 'roles', 'countries', 'states', 'productcategories', 'prodmulti']));
<div class="col-lg-8 col-xl-5">
<div class="form-group">
<select class="js-select2 form-control" id="prodmulti" name="prodmulti[]" style="width: 100%;" data-placeholder="Choose many.." multiple>
<option></option>
@foreach($productcategories as $productcategory)
<option value="{{ $productcategory->id }}"
{{ in_array($productcategory->id,$prodmulti) ? "selected" : "" }}>
{{ $productcategory->name }}
</option>
@endforeach
</select>
</div>
</div>
-----------------------
$prodmulti = explode(',', $prodmulti);
return view('admin.users.edit', compact(['user', 'roles', 'countries', 'states', 'productcategories', 'prodmulti']));
<div class="col-lg-8 col-xl-5">
<div class="form-group">
<select class="js-select2 form-control" id="prodmulti" name="prodmulti[]" style="width: 100%;" data-placeholder="Choose many.." multiple>
<option></option>
@foreach($productcategories as $productcategory)
<option value="{{ $productcategory->id }}"
{{ in_array($productcategory->id,$prodmulti) ? "selected" : "" }}>
{{ $productcategory->name }}
</option>
@endforeach
</select>
</div>
</div>
barryvdh/laravel-dompdf doesn't work last version for now
max_execution_time = 300
ini_set('max_execution_time', 300);
set_time_limit(0);
-----------------------
max_execution_time = 300
ini_set('max_execution_time', 300);
set_time_limit(0);
-----------------------
max_execution_time = 300
ini_set('max_execution_time', 300);
set_time_limit(0);
How can I make the whole HTML date field clickable?
<style>
.form-control input {
border: none;
box-sizing: border-box;
outline: 0;
padding: .75rem;
position: relative;
width: 100%;
}
input[type="date"]::-webkit-calendar-picker-indicator {
background: transparent;
bottom: 0;
color: transparent;
cursor: pointer;
height: auto;
left: 0;
position: absolute;
right: 0;
top: 0;
width: auto;
}
</style>
<div class="col-sm-4 col-lg-4 col-md-4">
<label for="start_date">Start Date</label><span class="required">*</span>
<input type="date" class="form-control" id="start_date" name="start_date" value="{{ old('start_date') }}" required>
</div>
Laravel 8: Class 'App\Policies\Gate' not found
use Illuminate\Support\Facades\Gate;
Append Data on bootstrap carousel with ajax
$(document).ready(function() {
$("#carousela").carousel();
//using `one` just for demo change it to `on`
$('#nextclick').one('click', function() {
/* var val = $('#hidden').val();
success: function(data){
//your other codes..
$('#hidden').val(parseInt(val) + parseInt(2));*/
//suppose data return look like this..
var data = [{
"id": 3,
"title": "Something3",
"magazine_sys_file_name": "somehting",
"link": null
}, {
"id": 4,
"title": "Something4",
"magazine_sys_file_name": "somehting",
"link": null
}]
if (data.length > 0) {
var html = ""
//loop
$(data).each(function(i, v) {
//generate htmls//
html += ` <div class="carousel-item">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="/uploads/${v.magazine_sys_file_name}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">${v.title}</h4>
<div><a href="${v.links}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>`
})
//insert new html after last slide
$(html).insertAfter('#carousela .carousel-item:last')
}
/*}
})*/
})
});
#carousela{
background:black
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div id="carousela" class="carousel slide" data-touch="false" data-interval="false">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="{{(!empty($row->magazine_sys_file_name) ? asset('/uploads/'.$row->magazine_sys_file_name):'')}}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">Something1</h4>
<div><a href="{{$row->links}}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="{{(!empty($row->magazine_sys_file_name) ? asset('/uploads/'.$row->magazine_sys_file_name):'')}}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">Something2</h4>
<div><a href="{{$row->links}}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#carousela" data-slide="prev">
<span class="carousel-control-prev-icon"></span>
</a>
<a class="carousel-control-next" href="#carousela" data-slide="next" id="nextclick">
<span class="carousel-control-next-icon"></span>
</a>
</div>
</div>
-----------------------
$(document).ready(function() {
$("#carousela").carousel();
//using `one` just for demo change it to `on`
$('#nextclick').one('click', function() {
/* var val = $('#hidden').val();
success: function(data){
//your other codes..
$('#hidden').val(parseInt(val) + parseInt(2));*/
//suppose data return look like this..
var data = [{
"id": 3,
"title": "Something3",
"magazine_sys_file_name": "somehting",
"link": null
}, {
"id": 4,
"title": "Something4",
"magazine_sys_file_name": "somehting",
"link": null
}]
if (data.length > 0) {
var html = ""
//loop
$(data).each(function(i, v) {
//generate htmls//
html += ` <div class="carousel-item">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="/uploads/${v.magazine_sys_file_name}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">${v.title}</h4>
<div><a href="${v.links}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>`
})
//insert new html after last slide
$(html).insertAfter('#carousela .carousel-item:last')
}
/*}
})*/
})
});
#carousela{
background:black
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div id="carousela" class="carousel slide" data-touch="false" data-interval="false">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="{{(!empty($row->magazine_sys_file_name) ? asset('/uploads/'.$row->magazine_sys_file_name):'')}}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">Something1</h4>
<div><a href="{{$row->links}}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="{{(!empty($row->magazine_sys_file_name) ? asset('/uploads/'.$row->magazine_sys_file_name):'')}}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">Something2</h4>
<div><a href="{{$row->links}}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#carousela" data-slide="prev">
<span class="carousel-control-prev-icon"></span>
</a>
<a class="carousel-control-next" href="#carousela" data-slide="next" id="nextclick">
<span class="carousel-control-next-icon"></span>
</a>
</div>
</div>
-----------------------
$(document).ready(function() {
$("#carousela").carousel();
//using `one` just for demo change it to `on`
$('#nextclick').one('click', function() {
/* var val = $('#hidden').val();
success: function(data){
//your other codes..
$('#hidden').val(parseInt(val) + parseInt(2));*/
//suppose data return look like this..
var data = [{
"id": 3,
"title": "Something3",
"magazine_sys_file_name": "somehting",
"link": null
}, {
"id": 4,
"title": "Something4",
"magazine_sys_file_name": "somehting",
"link": null
}]
if (data.length > 0) {
var html = ""
//loop
$(data).each(function(i, v) {
//generate htmls//
html += ` <div class="carousel-item">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="/uploads/${v.magazine_sys_file_name}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">${v.title}</h4>
<div><a href="${v.links}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>`
})
//insert new html after last slide
$(html).insertAfter('#carousela .carousel-item:last')
}
/*}
})*/
})
});
#carousela{
background:black
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div id="carousela" class="carousel slide" data-touch="false" data-interval="false">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="{{(!empty($row->magazine_sys_file_name) ? asset('/uploads/'.$row->magazine_sys_file_name):'')}}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">Something1</h4>
<div><a href="{{$row->links}}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row no-gutters m-0 p-0">
<div class="col-md-2 col-sm-12">
<img src="{{(!empty($row->magazine_sys_file_name) ? asset('/uploads/'.$row->magazine_sys_file_name):'')}}" class="img-thumbnail border-0 p-0" alt="" srcset="">
</div>
<div class="col-md-10 col-sm-12 px-4 m-0 m-mb">
<h4 class="text-light m-0 p-0">Something2</h4>
<div><a href="{{$row->links}}" class="text-center text-warning float-right">{{__('Read More')}}</a></div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#carousela" data-slide="prev">
<span class="carousel-control-prev-icon"></span>
</a>
<a class="carousel-control-next" href="#carousela" data-slide="next" id="nextclick">
<span class="carousel-control-next-icon"></span>
</a>
</div>
</div>
Laravel Access npm packages in .blade.php js
npm install
npm i twilio-video
npm run dev
-----------------------
const {connect} = require('twilio-video');
// it will contain $result['token']
const roomToken = document.querySelector('.room-token').value;
connect(roomToken, {name: 'test2'}).then(room => {
console.log(`Successfully joined a Room: ${room}`);
room.on('participantConnected', participant => {
console.log(`A remote Participant connected: ${participant}`);
});
}, error => {
console.error(`Unable to connect to Room: ${error.message}`);
});
let mix = require('laravel-mix');
mix.js('path/to/custom.js', 'public/folder');
@section('js_section')
<input type="hidden" class="room-token" value="{{ $result['token'] }}" />
<script src="{{ asset( 'path/to/complied/custom.js' ) }}"></script>
@endsection
-----------------------
const {connect} = require('twilio-video');
// it will contain $result['token']
const roomToken = document.querySelector('.room-token').value;
connect(roomToken, {name: 'test2'}).then(room => {
console.log(`Successfully joined a Room: ${room}`);
room.on('participantConnected', participant => {
console.log(`A remote Participant connected: ${participant}`);
});
}, error => {
console.error(`Unable to connect to Room: ${error.message}`);
});
let mix = require('laravel-mix');
mix.js('path/to/custom.js', 'public/folder');
@section('js_section')
<input type="hidden" class="room-token" value="{{ $result['token'] }}" />
<script src="{{ asset( 'path/to/complied/custom.js' ) }}"></script>
@endsection
-----------------------
const {connect} = require('twilio-video');
// it will contain $result['token']
const roomToken = document.querySelector('.room-token').value;
connect(roomToken, {name: 'test2'}).then(room => {
console.log(`Successfully joined a Room: ${room}`);
room.on('participantConnected', participant => {
console.log(`A remote Participant connected: ${participant}`);
});
}, error => {
console.error(`Unable to connect to Room: ${error.message}`);
});
let mix = require('laravel-mix');
mix.js('path/to/custom.js', 'public/folder');
@section('js_section')
<input type="hidden" class="room-token" value="{{ $result['token'] }}" />
<script src="{{ asset( 'path/to/complied/custom.js' ) }}"></script>
@endsection
Buttons don't have icons
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');
.table-buttons {
text-align: right;
}
.table-buttons form {
display: contents;
}
<!--CSS-->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<!--JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>
<td class="table-buttons">
<a href="javascript:void(0)" class="btn btn-success">
<i class="fas fa-eye"></i>
</a>
<a href="javascript:void(0)" class="btn btn-primary">
<i class="fas fa-edit"></i>
</a>
</td>
-----------------------
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');
.table-buttons {
text-align: right;
}
.table-buttons form {
display: contents;
}
<!--CSS-->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<!--JS-->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>
<td class="table-buttons">
<a href="javascript:void(0)" class="btn btn-success">
<i class="fas fa-eye"></i>
</a>
<a href="javascript:void(0)" class="btn btn-primary">
<i class="fas fa-edit"></i>
</a>
</td>
-----------------------
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/fontawesome.min.css" integrity="undefined" crossorigin="anonymous">
<script src="https://kit.fontawesome.com/ee826a2333.js" crossorigin="anonymous"></script>
<button type="submit" class="btn btn-danger">
<i class="fa fa-trash-alt"></i>
</button>
Including HTML in Blade
$msg = 'You .... to <a href="'. action('UserController@viewStore', $drug->drugStore->id) . '">' . $drug->drugStore->name . '</a>';
// ^^^^ ^^^^
QUESTION
Get Country list from database and get Attempt to read property "country_name" on null
Asked 2021-Jun-15 at 15:33While trying to create show my students on Laravel 8, I met with some errors, first it wasn't creating the students, then I get errors on /students/ page
Attempt to read property "country_name" on null
index.blade.php
<tbody id="allocate-table-body">
@foreach($students as $student)
<tr class="id-card">
<td><a target="_blank" href=""> {{$student->id}}</a></td>
<td> {{$student->name}}</td>
<td>{{$student->countries->country_name}}</td>
<td>{{$student->phone}}</td>
<td>{{$student->work}}</td>
<td>{{$student->group}}</td>
<td>{{$student->email}}</td>
<td><a class="btn btn-success" href="#">edit</a></td>
</tr>
@endforeach
</tbody>
Student Model
class Student extends Model
{
use HasFactory;
public $fillable = [
'name',
'marital',
'gender',
'country',
'city',
'education',
'work',
'phone',
'group',
'email',
'description'
];
public function countries()
{
return $this->belongsTo(Country::class);
}
}
country model
class Country extends Model
{
protected $fillable = ['id', 'phone_code', 'country_code', 'country_name'];
use HasFactory;
public function student()
{
return $this->hasMany(Student::class);
}
}
studentController
public function index(Request $request)
{
$students = Student::paginate(50);
$countries = DB::table('countries')->get();
return view('students.index', compact( 'students','countries'));
}
ANSWER
Answered 2021-Jun-15 at 15:33Since foreignKey
not laravel convention so you have to mention foreignKey
in belongsTo
.I believe foreignKey is country
in Student Table
public function countries()
{
return $this->belongsTo(Country::class,'country','id');
}
And in Country Model
public function student()
{
return $this->hasMany(Student::class,'country','id');
}
Then you can access
$students = Student::with('countries')->paginate(50);
BelongsTo method description
belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
No vulnerabilities reported
Save this library and start creating your kit
Explore Related Topics
Save this library and start creating your kit