Skip to content

Instantly share code, notes, and snippets.

@Sentinel17
Created March 24, 2018 06:16
Show Gist options
  • Save Sentinel17/b4245900a97e9d2f1f9b99840847aad9 to your computer and use it in GitHub Desktop.
Save Sentinel17/b4245900a97e9d2f1f9b99840847aad9 to your computer and use it in GitHub Desktop.
Laravel ДЗ №3
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Главная</title>
<link rel="stylesheet" href="{{ asset('css/styles.min.css') }}">
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<header class="site-header">
<div class="container">
<div class="logo">
<a href="{{route('index')}}" >Laravel Blog</a>
</div>
<nav class="header-menu">
<ul>
<li><a href="{{route('newarticle')}}" >Добавить новость</a></li>
</ul>
</nav>
</div>
</header>
<div class="container">
<table class="table table-bordered">
<thead>
<tr>
<th>Изображение</th>
<th>Заголовок</th>
<th>Краткое описание</th>
<th>Полное описание</th>
<th>Редактировать</th>
<th>Удалить</th>
</tr>
</thead>
<tbody>
@foreach($news as $new)
<tr>
<td style="width: 200px;" >
@empty(!$new->image)
<img class="mw-100" src="{{asset('images/'.$new->image)}}">
@else
##
@endempty
</td>
<td>{{$new->title}}</td>
<td>{{$new->short_description}}</td>
<td>{{$new->body}}</td>
<td>
<a href="{{route('edit', ['id' => $new->id]) }}" class="btn btn-info">Редактировать</a>
</td>
<td>
<a href="{{route('delete', $new->id)}}" class="btn btn-danger">Удалить</a>
</td>
</tr>
@endforeach
</tbody>
{{$news->links()}}
</table>
</div>
</body>
</html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Главная</title>
<link rel="stylesheet" href="{{ asset('css/styles.min.css') }}">
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<header class="site-header">
<div class="container">
<div class="logo">
<a href="{{route('index')}}" >Laravel Blog</a>
</div>
<nav class="header-menu">
<ul>
<li><a href="{{route('news')}}" >Админ-панель</a></li>
</ul>
</nav>
</div>
</header>
<div class="container">
<div class="col-md-7">
<h3>Редактирование новости</h3><br>
<form method="post" action="{{route('edit', ['id' => $news->id ] ) }}" enctype="multipart/form-data">
{!! csrf_field() !!}
<div class="form-group">
<div class="col-md-3">
Заголовок:
</div>
<div class="col-md-9">
<input type="text" name="title" value="{{$news->title}}" class="form-control" required>
</div>
</div>
<div class="form-group">
<div class="col-md-3">
Краткое описание:
</div>
<div class="col-md-9">
<textarea name="short_description" class="form-control">{{$news->short_description}}</textarea>
</div>
</div>
<div class="form-group">
<div class="col-md-3">
Полное описание:
</div>
<div class="col-md-9">
<textarea name="body" class="form-control" rows="10" required>{{$news->body}}</textarea>
</div>
</div>
<div class="form-group">
<div class="col-md-3">
Выбрать изображнение:
</div>
<div class="col-md-9">
<input type="file" name="image" id="image">
</div>
</div>
<div class="form-group">
<div class="col-md-9 col-md-offset-3">
<br><button type="submit" class="btn btn-primary">Редактировать</button>
</div>
</div>
</form>
</div>
</div>
</body>
</html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Главная</title>
<link rel="stylesheet" href="{{ asset('css/styles.min.css') }}">
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<header class="site-header">
<div class="container">
<div class="logo">
<a href="{{route('index')}}" >Laravel Blog</a>
</div>
<nav class="header-menu">
<ul>
<li><a href="{{route('news')}}" >Админ-панель</a></li>
</ul>
</nav>
</div>
</header>
<div class="container">
<div class="col-md-7">
<h2>Добавление новости</h2><br>
<form method="post" action="{{route('newarticle')}}" enctype="multipart/form-data">
{!! csrf_field() !!}
<div class="form-group">
<div class="col-md-3">
Заголовок:
</div>
<div class="col-md-9">
<input type="text" name="title" class="form-control" required>
</div>
</div>
<div class="form-group">
<div class="col-md-3">
Краткое описание:
</div>
<div class="col-md-9">
<textarea name="short_description" class="form-control"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-md-3">
Полное описание:
</div>
<div class="col-md-9">
<textarea name="body" class="form-control" rows="10" required></textarea>
</div>
</div>
<div class="form-group">
<div class="col-md-3">
Выбрать изображнение:
</div>
<div class="col-md-9">
<input type="file" name="image" id="image">
</div>
</div>
<div class="form-group">
<div class="col-md-9 col-md-offset-3">
<br><button type="submit" class="btn btn-primary">Добавить</button>
</div>
</div>
</form>
</div>
</div>
</body>
</html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Главная</title>
<link rel="stylesheet" href="{{ asset('css/styles.min.css') }}">
</head>
<body>
<header class="site-header">
<div class="container">
<div class="logo">Laravel Blog</div>
<nav class="header-menu">
<ul>
<li><a href="{{route('news')}}">Админ панель</a></li>
</ul>
</nav>
</div>
</header>
<div class="container">
<div class="row">
@foreach($news as $new)
<div>
<h2>{{$new->title}}</h2>
<div style="max-width: 200px;">
<p><img class="card-img-top" src="{{asset('images/'.$new->image)}}"></p>
</div>
<div>
<p>{{$new->short_description}}.</p>
<a href="{{route('onenews', ['id' => $new->id])}}" class="btn btn-default">Читать новость</a>
</div>
</div>
@endforeach
</div>
{{$news->links()}}
</div>
</body>
</html>
<?php
namespace App\Models;
use http\Env\Request;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class News extends Model
{
protected $table = 'news';
public function getAll(){
$rows = DB::table($this->table)->orderBy('created_at', 'desc')->paginate(5);
return $rows;
}
public function updates($id, $data){
DB::table($this->table)->where('id', $id)->update($data);
}
public function deleteArticles($id){
DB::table($this->table)->where('id', '=', $id)->delete();
}
public function addNews($data){
DB::table($this->table)->insert($data);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\News;
class NewsController extends Controller
{
public function index()
{
$news = (new News)->getAll();
return view('news', compact('news'));
}
public function indexForAdmin()
{
$news = (new News)->getAll();
return view('adminnews', compact('news'));
}
public function edit(Request $request, $id)
{
if ($request->method() == 'POST') {
$data = $request->all();
unset($data['_token']);
if ($request->hasFile('image')) {
$file = $request->file('image');
$newfilename = md5(time() . rand(0, 100)) . "." . $file->extension();
$file->move(public_path() . '/images', $newfilename);
$data['image'] = $newfilename;
}
(new News)->updates($id, $data);
return redirect()->route('news');
} else {
$news = News::find($id);
return view('edit', ['news' => $news]);
}
}
public function deleteArticle($id)
{
$image = News::find($id)->image;
unlink(public_path() . '/images/' . $image);
(new News)->deleteArticles($id);
return redirect()->route('news');
}
public function newArticle(Request $request)
{
if ($request->method() == 'POST') {
$data = $request->all();
unset($data['_token']);
if ($request->hasFile('image')) {
$file = $request->file('image');
$newfilename = md5(time() . rand(0, 100)) . "." . $file->extension();
$file->move(public_path() . '/images', $newfilename);
$data['image'] = $newfilename;
}
(new News)->addNews($data);
return redirect()->route('news');
}
return view('newarticle');
}
public function getOneNews($id)
{
$news = News::find($id);
return view('onenews', compact('news'));
}
}
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Главная</title>
<link rel="stylesheet" href="{{ asset('css/styles.min.css') }}">
</head>
<body>
<header class="site-header">
<div class="container">
<div class="logo">Laravel Blog</div>
<nav class="header-menu">
<ul>
<li><a href="{{route('news')}}">Админ панель</a></li>
</ul>
</nav>
</div>
</header>
<div class="container">
<div class="row">
<div>
<h2>{{$news->title}}</h2>
<div style="max-width: 200px;">
<p> <img src="{{asset('images/'.$news->image)}}"></p>
</div>
<div>
<p>{{$news->body}}.</p>
</div>
</div>
</div>
</div>
</body>
</html>
<?php
Route::get('/', 'NewsController@index')->name('index');
Route::prefix('admin')->group(function () {
Route::get('/', 'NewsController@indexForAdmin')->name('news');
Route::any('edit/{id}', 'NewsController@edit')->name('edit');
Route::any('newarticle', 'NewsController@newArticle')->name('newarticle');
Route::get('news/{id}', 'NewsController@getOneNews')->name('onenews');
Route::get('delete/{id}', 'NewsController@deleteArticle')->name('delete');
});
Главная страница новостей
http://picua.org/img/2018-03/24/qu47yrmx7tnhebwzoia7e16id.png
Просмотр отдельной новости
http://picua.org/img/2018-03/24/0zw6uxlq79igboqnpba7t9a2z.png
Админ-панель
http://picua.org/img/2018-03/24/sto5ldlp9p0e7qz163a4i53fi.png
Добавление новости
http://picua.org/img/2018-03/24/kivq8ain3hosr6f9u5q80pxc0.png
Редактирование новости
http://picua.org/img/2018-03/24/jok5hgtzthwcu0jyb6opepljf.png
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment