#php #html #laravel #content-management-system
#php #HTML #laravel #система управления контентом
Вопрос:
В настоящее время я застрял, пытаясь разработать панель администратора для веб-сайта электронной коммерции. Я хочу иметь возможность разрешить клиенту создавать свою собственную страницу через панель администратора. Например, если клиент заполняет форму, которую я создал, чтобы добавить новую страницу с заголовком «О нас», URI как AboutUs, а содержимое страницы может быть просто «Добро пожаловать на страницу «О нас»!». Ниже приведены части моего кода, а также ссылка на репозиторий GitHub.
Это мой PageController.php
class PageController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$pages = Page::all()->toArray();
return view('page.index', compact('pages'));
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
//This will load create.blade.php
return view('page.create');
}
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required',
'URI' => 'required',
'pageContent' => 'required',
]);
$page = new Page([
'title' => $request->get('title'),
'URI' => $request->get('URI'),
'pageContent' => $request->get('pageContent'),
]);
$page->save();
return redirect()->route('page.index')->with('success', 'Page Added');
}
Это мой Page.php модель.
class Page extends Model
{
protected $fillable = ['title', 'URI', 'pageContent'];
}
Это моя миграция.
class CreatePagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('pages', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('URI');
$table->string('pageContent');
$table->timestamps();
});
}
Это мой create.blade.php где пользователь заполняет форму для создания новой страницы.
@extends('pageManagement')
<!-- Content being displayed!-->
@section('content')
<div class="row">
<div class="col-md-12">
<br />
<h3 aling="center">Add Page</h3>
<br />
@if(count($errors) > 0)
<div class="alert alert-danger">
<ul>
<!--Prints valdiation errors on this page!-->
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
<!--Checks if success has been returend from PageController.php!-->
@if(Session::has('success'))
<div class="alert alert-success">
<p>{{ Session::get('success') }}</p>
</div>
@endif
<form method="post" action="{{url('page')}}">
{{csrf_field()}}
<div class="form-group">
<input type="text" name="title" class="form-control" placeholder="Enter page title"
/>
</div>
<div class="form-group">
<input type="text" name="URI" class="form-control" placeholder="Enter page URI" />
</div>
<div class="form-group">
<input type="text" name="pageContent" class="form-control" placeholder="Enter page
content" />
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<!-- Closes the directive!-->
@endsection
This is the dynamic page, I want to display the page’s contents on.
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
{{ $pageContent -> pageContent}}
<h1>This is a Heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
This is the page management page, where the admins can see all the pages in the website.
@extends('pageManagement')
@section('content')
<div class="row">
<div class="col-md-12">
<br />
<h3 align="center">Page Data</h3>
<br />
@if($message = Session::get('success'))
<div class="alert alert-success">
<p>{{$message}}</p>
</div>
@endif
<div align="right">
<a href="{{route('page.create')}}" class="btn btn-primary">Add</a>
</div>
<table class="table table-bordered">
<tr>
<th>Title</th>
<th>URI</th>
<th>Edit</th>
<th>Delete</th>
</tr>
@foreach($pages as $row)
<tr>
<td>{{$row['title']}}</td>
<td>{{$row['URI']}}</td>
<td></td>
<td></td>
</tr>
@endforeach
</table>
</div>
</div>
@endsection
Это мой pageManagement.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Page Management</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-
alpha/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<div class="container">
<!-- Allows displaying content!-->
@yield('content')
</div>
</body>
</html>
Это маршруты, которые я использовал в web.php
Route::resource('page', 'PageController');
Route::get('page/{URI}', function($URI) {
$pageContent = DB::tables('Page')->where('URI',$URI);
return view('page.dynamicPage', ['pageContent' => $pageContent]);
});
Я также пробовал несколько разных маршрутов, однако все они не работают, включая Route::get(‘страница/{URI} … один из приведенных выше. Ниже приведены другие, которые я пробовал.
/*Route::get('page/{any}', function($any) {
$pageContent = explode("/",$any);
})->where("any", ".*");*/
/*Route::get('/', function () {
Route::get('{URI}', 'PageController@getPage');
});*/
//Route::get('URI','PageController@getPage');
Моя ссылка на репозиторий GitHub:https://github.com/xiaoheixi/myFirstWebsite
Всем спасибо за помощь! 😀
О! Я забыл добавить желаемый результат и тот, который у меня есть в настоящее время, в основном я хочу, чтобы отображалось содержимое страницы, соответствующее URI, однако я просто продолжаю получать пустой белый экран, когда я набираю, например, «127.0.0.1: 8000 / страница / AboutUs», в строке поиска…
Ооочень большое вам спасибо за чтение, коллеги-программисты!
Комментарии:
1.
DB::table('pages')->where('URI',$URI)->first()
вместоDB::tables('Page')->where('URI',$URI)
2. также опубликуйте свое сообщение об ошибке, нам очень полезно помочь
3. Сложность в том, что нет сообщения об ошибке, в настоящее время я использую Visual Studio Code IDE, и он ничего не показывает… вот почему я разочарован, если все выглядит правильно, почему это не работает?
4. Я последовал вашему совету, пользователь 3253002 и заменил DB:: tables (‘Страница’)-> where (‘URI’, $ URI) на DB::table (‘страницы’)-> where (‘URI’, $ URI)-> first (), но все равно получил белый пустой экран.
5. ваше представление
page.dynamicPage
не существует в вашем репозитории.. у вас есть толькоpage.create
иpage.index
..